Skip to main content

fslite_server/
lib.rs

1//! HTTP adapter exposing `fslite_core::FileSystem` as a resource-oriented API.
2
3mod admin;
4mod auth;
5mod dto;
6mod error;
7pub mod range;
8mod routes;
9mod state;
10mod tracing_mw;
11
12use axum::Router;
13use axum::middleware;
14
15pub use admin::{SqliteWorkspaceAdmin, WorkspaceAdmin};
16pub use auth::{AuthProvider, AuthenticatedActor, BearerTokenAuthProvider, Ctx};
17pub use error::ApiError;
18pub use state::AppState;
19pub use tracing_mw::RequestId;
20
21/// Builds the complete application router from shared state.
22pub fn app(state: AppState) -> Router {
23    Router::new()
24        .merge(routes::health_router())
25        .merge(routes::nodes::router())
26        .merge(routes::directories::router())
27        .merge(routes::trash::router())
28        .merge(routes::content::router())
29        .merge(routes::search::router())
30        .merge(routes::batch::router())
31        .merge(routes::workspaces::router())
32        .fallback(|| async { ApiError::RouteNotFound })
33        .with_state(state)
34        .layer(middleware::from_fn(tracing_mw::request_id))
35        .layer(tracing_mw::trace_layer())
36}