From d4bd9c6c5e5104dc24ff89221e78532f87174aa3 Mon Sep 17 00:00:00 2001 From: Vitor Hideyoshi Nakazone Batista Date: Sun, 25 Feb 2024 02:25:55 -0300 Subject: [PATCH] Implements RouterBuilder --- src/main.rs | 1 + src/route.rs | 11 +++++------ src/utils/mod.rs | 1 + src/utils/router_builder.rs | 22 ++++++++++++++++++++++ 4 files changed, 29 insertions(+), 6 deletions(-) create mode 100644 src/utils/mod.rs create mode 100644 src/utils/router_builder.rs diff --git a/src/main.rs b/src/main.rs index af6fa53..1a050c9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -4,6 +4,7 @@ mod middleware; mod model; mod route; mod service; +mod utils; use crate::config::config_server; diff --git a/src/route.rs b/src/route.rs index 87da588..54294ac 100644 --- a/src/route.rs +++ b/src/route.rs @@ -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() } diff --git a/src/utils/mod.rs b/src/utils/mod.rs new file mode 100644 index 0000000..6ebe867 --- /dev/null +++ b/src/utils/mod.rs @@ -0,0 +1 @@ +pub mod router_builder; diff --git a/src/utils/router_builder.rs b/src/utils/router_builder.rs new file mode 100644 index 0000000..24fd3bc --- /dev/null +++ b/src/utils/router_builder.rs @@ -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() + } +}