1pub mod auth;
2pub mod config;
3pub mod dashboard;
4pub mod error;
5pub mod locks;
6pub mod metrics;
7pub mod model;
8pub mod namespace;
9pub mod routes;
10pub mod state;
11pub mod storage;
12
13use std::sync::Arc;
14
15use axum::Router;
16
17use crate::auth::Authorizer;
18use crate::config::Config;
19use crate::locks::LockStore;
20use crate::metrics::Metrics;
21use crate::state::AppState;
22use crate::storage::LocalStore;
23
24pub fn app(config: Config) -> Router {
25 let store = LocalStore::new(config.storage_root.clone());
26 let locks = LockStore::new(config.storage_root.clone());
27 let authorizer = Authorizer::new(&config.auth);
28
29 routes::router(Arc::new(AppState {
30 store,
31 locks,
32 config,
33 authorizer,
34 metrics: Metrics::new(),
35 }))
36}