Skip to main content

lfsx_server/
lib.rs

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 range;
10pub mod routes;
11pub mod state;
12pub mod storage;
13
14use std::sync::Arc;
15
16use axum::Router;
17
18use crate::auth::Authorizer;
19use crate::config::Config;
20use crate::locks::LockStore;
21use crate::metrics::Metrics;
22use crate::state::AppState;
23use crate::storage::LocalStore;
24
25pub fn app(config: Config) -> Router {
26    let store = LocalStore::new(config.storage_root.clone())
27        .with_max_object_size(config.max_object_size)
28        .with_compression(config.compression);
29    let locks = LockStore::new(config.storage_root.clone());
30    let authorizer = Authorizer::new(&config.auth);
31
32    routes::router(Arc::new(AppState {
33        store,
34        locks,
35        config,
36        authorizer,
37        metrics: Metrics::new(),
38    }))
39}