use crate::server::AppState;
use axum::{extract::State, http::StatusCode, Json};
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize, utoipa::ToSchema)]
pub struct HealthResponse {
pub status: String,
pub version: String,
pub storage: String,
pub uptime_seconds: u64,
}
#[utoipa::path(
get,
path = "/api/health",
responses(
(status = 200, description = "Service is healthy", body = HealthResponse)
),
tag = "health"
)]
pub async fn health_check(
State(state): State<AppState>,
) -> Result<Json<HealthResponse>, StatusCode> {
let uptime = state.start_time.elapsed().as_secs();
let response = HealthResponse {
status: "healthy".to_string(),
version: crate::VERSION.to_string(),
storage: "connected".to_string(),
uptime_seconds: uptime,
};
Ok(Json(response))
}