use axum::{
routing::{get, post, put},
Router,
};
use super::handlers;
use crate::AppContext;
pub fn create_router(_ctx: AppContext) -> Router<AppContext> {
Router::new()
.route("/health", get(handlers::health_check))
.nest("/recordings", recordings_router())
.nest("/segments", segments_router())
.nest("/clusters", clusters_router())
.nest("/evidence", evidence_router())
.route("/search", post(handlers::search))
}
fn recordings_router() -> Router<AppContext> {
Router::new()
.route("/", post(handlers::upload_recording))
.route("/:id", get(handlers::get_recording))
}
fn segments_router() -> Router<AppContext> {
Router::new()
.route("/:id/neighbors", get(handlers::get_neighbors))
}
fn clusters_router() -> Router<AppContext> {
Router::new()
.route("/", get(handlers::list_clusters))
.route("/:id", get(handlers::get_cluster))
.route("/:id/label", put(handlers::assign_cluster_label))
}
fn evidence_router() -> Router<AppContext> {
Router::new()
.route("/", post(handlers::generate_evidence_pack))
.route("/:id", get(handlers::get_evidence_pack))
}
#[cfg(test)]
mod tests {
use super::*;
use axum::body::Body;
use axum::http::{Request, StatusCode};
use tower::ServiceExt;
}