This commit is contained in:
2025-10-09 22:16:29 +02:00
commit 768f8cb21c
33 changed files with 12047 additions and 0 deletions
+64
View File
@@ -0,0 +1,64 @@
use axum::{
extract::DefaultBodyLimit,
middleware,
routing::{delete, get, patch, post},
Router,
};
use tower_http::cors::{Any, CorsLayer};
use crate::{auth::AuthenticatedUser, state::AppState};
pub mod auth;
pub mod documents;
pub mod folders;
pub mod health;
pub mod tags;
pub fn create_router(state: AppState) -> Router<()> {
let cors = CorsLayer::new()
.allow_origin(Any)
.allow_methods(Any)
.allow_headers(Any);
let auth_routes = Router::new()
.route("/login", post(auth::login))
.route("/logout", post(auth::logout))
.route("/me", get(auth::me));
let documents_routes = Router::new()
.route(
"/",
get(documents::list_documents).post(documents::upload_document),
)
.route(
"/:id",
get(documents::get_document).delete(documents::delete_document),
)
.route("/:id/download", get(documents::download_document))
.route("/:id/folder", patch(documents::move_document))
.route("/:id/tags", post(documents::assign_tags))
.route("/:id/tags/:tag_id", delete(documents::remove_tag));
let folders_routes = Router::new()
.route("/", post(folders::create_folder))
.route("/:id", delete(folders::delete_folder))
.route("/:id/contents", get(folders::list_folder_contents))
.route("/:id/documents", get(folders::search_documents));
let tags_routes = Router::new().route("/", get(tags::list_tags).post(tags::create_tag));
let protected_state = state.clone();
let protected_routes = Router::new()
.nest("/api/documents", documents_routes)
.nest("/api/folders", folders_routes)
.nest("/api/tags", tags_routes)
.route("/api/health", get(health::health_check))
.layer(middleware::from_extractor_with_state::<AuthenticatedUser, _>(protected_state));
Router::new()
.nest("/api/auth", auth_routes)
.merge(protected_routes)
.with_state(state)
.layer(cors)
.layer(DefaultBodyLimit::max(1024 * 1024 * 512))
}