1mod 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
21pub 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}