mod admin;
mod auth;
mod dto;
mod error;
pub mod range;
mod routes;
mod state;
mod tracing_mw;
use axum::Router;
use axum::middleware;
pub use admin::{SqliteWorkspaceAdmin, WorkspaceAdmin};
pub use auth::{AuthProvider, AuthenticatedActor, BearerTokenAuthProvider, Ctx};
pub use error::ApiError;
pub use state::AppState;
pub use tracing_mw::RequestId;
pub fn app(state: AppState) -> Router {
Router::new()
.merge(routes::health_router())
.merge(routes::nodes::router())
.merge(routes::directories::router())
.merge(routes::trash::router())
.merge(routes::content::router())
.merge(routes::search::router())
.merge(routes::batch::router())
.merge(routes::workspaces::router())
.fallback(|| async { ApiError::RouteNotFound })
.with_state(state)
.layer(middleware::from_fn(tracing_mw::request_id))
.layer(tracing_mw::trace_layer())
}