diff --git a/src/api/health.rs b/src/api/health.rs index ee9339c..c185754 100644 --- a/src/api/health.rs +++ b/src/api/health.rs @@ -52,7 +52,7 @@ pub fn get_uptime_ms() -> u64 { } #[derive(Debug, Serialize)] -struct HealthResponse { +pub struct HealthResponse { ip: String, port: u16, status: String, @@ -68,7 +68,7 @@ struct HealthResponse { } #[derive(Debug, Serialize)] -struct DetailedHealthResponse { +pub struct DetailedHealthResponse { ip: String, port: u16, status: String, @@ -189,7 +189,7 @@ struct ServiceStatus { error: Option, } -async fn health(State(state): State) -> Json { +pub async fn health(State(state): State) -> Json { let postgres = check_postgres().await; let redis = check_redis().await; let qdrant = check_qdrant().await; @@ -222,7 +222,7 @@ async fn health(State(state): State) -> Json { }) } -async fn health_detailed(State(state): State) -> Json { +pub async fn health_detailed(State(state): State) -> Json { let postgres = check_postgres().await; let redis = check_redis().await; let qdrant = check_qdrant().await; @@ -420,7 +420,7 @@ async fn health_detailed(State(state): State) -> Json, ) -> Result, (StatusCode, String)> { let report = crate::core::health_agent::run_consistency_checks(&state.db).await; diff --git a/src/api/server.rs b/src/api/server.rs index ddba95e..80d3777 100644 --- a/src/api/server.rs +++ b/src/api/server.rs @@ -1,6 +1,7 @@ use std::time::Duration; -use axum::Router; +use axum::{Json, Router}; +use serde_json::json; use tokio::time::timeout; use tower_http::cors::{Any, CorsLayer}; @@ -15,6 +16,7 @@ use super::checkin_api; use super::docs; use super::files; use super::health; +use super::health::{health, health_detailed, health_consistency}; use super::identities; use super::identity_agent_api; use super::identity_api; @@ -134,8 +136,14 @@ pub async fn start_server(host: &str, port: u16) -> anyhow::Result<()> { .allow_methods(Any) .allow_headers(Any); + let public_health_routes = Router::new() + .route("/api/v1/health", axum::routing::get(health)) + .route("/api/v1/health/detailed", axum::routing::get(health_detailed)) + .route("/api/v1/health/consistency", axum::routing::get(health_consistency)); + let app = Router::new() .merge(auth::auth_routes()) + .merge(public_health_routes) .merge(health::health_routes()) .merge(docs::doc_routes()) .merge(protected_routes)