use axum::Router;
use std::sync::Arc;
use crate::presentation::http::{
create_bucket_routes,
create_content_hash_routes,
create_conversion_job_routes,
create_file_comment_routes,
create_file_lock_routes,
create_file_share_routes,
create_processing_job_routes,
create_stored_file_routes,
create_upload_session_routes,
create_user_quota_routes
};
use crate::handlers::AppState;
pub fn create_stateless_routes(module: &crate::BucketModule) -> Router<()> {
Router::new()
.merge(create_bucket_routes(module.bucket_service.clone()))
.merge(create_content_hash_routes(module.content_hash_service.clone()))
.merge(create_conversion_job_routes(module.conversion_job_service.clone()))
.merge(create_file_comment_routes(module.file_comment_service.clone()))
.merge(create_file_lock_routes(module.file_lock_service.clone()))
.merge(create_file_share_routes(module.file_share_service.clone()))
.merge(create_processing_job_routes(module.processing_job_service.clone()))
.merge(create_stored_file_routes(module.stored_file_service.clone()))
.merge(create_upload_session_routes(module.upload_session_service.clone()))
.merge(create_user_quota_routes(module.user_quota_service.clone()))
}
pub fn get_routes(module: &crate::BucketModule) -> Router<()> {
Router::new()
.nest("/api/v1", create_stateless_routes(module))
}
pub fn create_stateful_routes() -> Router<AppState> {
Router::new()
}
pub fn create_combined_routes(module: &crate::BucketModule) -> Router<AppState> {
let crud_routes: Router<()> = create_stateless_routes(module);
let crud_routes_stateful: Router<AppState> = crud_routes.with_state(()).into();
Router::new()
.merge(crud_routes_stateful)
.merge(create_stateful_routes())
}
pub fn get_routes_with_state(module: &crate::BucketModule) -> Router<AppState> {
Router::new()
.nest("/api/v1", create_combined_routes(module))
}