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 route;
mod service;
mod utils;
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::service::auth_service::AuthService;
use crate::service::email_service::EmailService;
use crate::utils::router_builder::RouterBuilder;
use axum::{
middleware,
routing::{get, post},
@@ -23,10 +24,8 @@ fn configure_health_endpoint(router: Router) -> Router {
}
pub fn create_route() -> Router {
let mut router = Router::new();
router = configure_message_endpoint(router);
router = configure_health_endpoint(router);
router
RouterBuilder::new()
.add_config(configure_message_endpoint)
.add_config(configure_health_endpoint)
.build()
}

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()
}
}