Files
YANPM/apps/api/src/routes.rs
GW_MC edbcdaeff4
Some checks failed
Test / verify-generated-code (pull_request) Successful in 7m59s
Test / test (pull_request) Failing after 1m12s
Test / lint (pull_request) Failing after 1m11s
Implement frontend routing and API fallback handling; add dependencies for include_dir and mime_guess
2025-12-02 19:25:46 +08:00

52 lines
1.1 KiB
Rust

mod api;
mod view;
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<DatabaseConnection>,
// TODO: remove dead_code allowances when fields are used
#[allow(dead_code)]
pub service: Arc<AppService>,
}
pub type ServiceState<T> = Arc<T>;
pub struct AppService {
#[allow(dead_code)] // TODO: remove when used
pub settings: ServiceState<dyn SettingsStore>,
}
pub fn get_root_router(state: impl Into<Arc<AppState>>) -> 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<T: Send + Sync>() {}
assert_send_sync::<AppState>();
}
}