use std::sync::Arc; use axum::{Router, middleware}; use crate::app::http::api; use crate::app::http::api::{channel, core, message, server}; use crate::app::http::middleware::auth_middleware; use crate::app::http::middleware::auth_middleware::auth_middleware; use crate::db::context::DbContext; #[derive(Clone)] pub struct AppState { db: Arc } pub fn configure_routes(db_context: Arc) -> Router { let app_state = Arc::new(AppState { db: db_context.clone() }); let api_router = Router::new() .nest("/server/", server::routes()) .nest("/channel/", channel::routes()) .nest("/message/", message::routes()) .with_state(app_state); Router::new() .merge(core::routes()) .nest("/api", api_router) .layer(middleware::from_fn_with_state(db_context.clone(), auth_middleware)) }