mod api; mod view; pub use self::api::ApiDoc; use std::sync::Arc; use axum::{Extension, Router}; use migration::sea_orm::DatabaseConnection; use crate::{middlewares, services::settings::SettingsStore}; #[derive(Clone)] pub struct AppState { // TODO: remove dead_code allowances when fields are used #[allow(dead_code)] pub database_connection: Arc, // TODO: remove dead_code allowances when fields are used #[allow(dead_code)] pub service: Arc, } pub type ServiceState = Arc; pub struct AppService { #[allow(dead_code)] // TODO: remove when used pub settings: ServiceState, } pub fn get_root_router(state: impl Into>) -> Router { let mut router = Router::new(); router = router .nest("/api", api::get_api_router()) .merge(view::get_view_router()); router = middlewares::apply_root_middleware(router); router = router.layer(Extension(state.into())); router } #[cfg(test)] mod tests { use super::*; #[test] fn ensure_state_send_sync() { fn assert_send_sync() {} assert_send_sync::(); } }