Implements RouterBuilder

This commit is contained in:
2024-02-25 02:25:55 -03:00
parent b8b8d5713f
commit d4bd9c6c5e
4 changed files with 29 additions and 6 deletions

View File

@@ -4,6 +4,7 @@ mod middleware;
mod model; mod model;
mod route; mod route;
mod service; mod service;
mod utils;
use crate::config::config_server; use crate::config::config_server;

View File

@@ -4,6 +4,7 @@ use crate::handler::message::send_message;
use crate::middleware::auth_middleware::auth_middleware; use crate::middleware::auth_middleware::auth_middleware;
use crate::service::auth_service::AuthService; use crate::service::auth_service::AuthService;
use crate::service::email_service::EmailService; use crate::service::email_service::EmailService;
use crate::utils::router_builder::RouterBuilder;
use axum::{ use axum::{
middleware, middleware,
routing::{get, post}, routing::{get, post},
@@ -23,10 +24,8 @@ fn configure_health_endpoint(router: Router) -> Router {
} }
pub fn create_route() -> Router { pub fn create_route() -> Router {
let mut router = Router::new(); RouterBuilder::new()
.add_config(configure_message_endpoint)
router = configure_message_endpoint(router); .add_config(configure_health_endpoint)
router = configure_health_endpoint(router); .build()
router
} }

1
src/utils/mod.rs Normal file
View File

@@ -0,0 +1 @@
pub mod router_builder;

View File

@@ -0,0 +1,22 @@
use axum::Router;
pub struct RouterBuilder {
router: Router,
}
impl RouterBuilder {
pub fn new() -> Self {
RouterBuilder {
router: Router::new(),
}
}
pub fn add_config(&mut self, config_fn: fn(Router) -> Router) -> &mut Self {
self.router = config_fn(self.router.clone());
return self;
}
pub fn build(&self) -> Router {
self.router.clone()
}
}