vibe_graph_api/routes/
mod.rs1mod git;
4mod graph;
5mod health;
6
7use std::sync::Arc;
8
9use axum::{routing::get, Router};
10use tower_http::cors::{Any, CorsLayer};
11use tower_http::trace::{DefaultMakeSpan, DefaultOnResponse, TraceLayer};
12use tracing::Level;
13
14use crate::types::ApiState;
15use crate::ws::ws_handler;
16
17pub fn create_api_router(state: Arc<ApiState>) -> Router {
19 let cors = CorsLayer::new()
20 .allow_origin(Any)
21 .allow_methods(Any)
22 .allow_headers(Any);
23
24 Router::new()
25 .route("/health", get(health::health_handler))
27 .route("/graph", get(graph::graph_handler))
29 .route("/graph/nodes", get(graph::nodes_handler))
30 .route("/graph/edges", get(graph::edges_handler))
31 .route("/graph/metadata", get(graph::metadata_handler))
32 .route("/git/changes", get(git::changes_handler))
34 .route("/ws", get(ws_handler))
36 .layer(
38 TraceLayer::new_for_http()
39 .make_span_with(
40 DefaultMakeSpan::new()
41 .level(Level::INFO)
42 .include_headers(false),
43 )
44 .on_response(DefaultOnResponse::new().level(Level::INFO)),
45 )
46 .layer(cors)
47 .with_state(state)
48}