use axum::{Json, extract::State, http::StatusCode}; use serde_json::{Value, json}; use crate::{db, state::AppState}; /// Sağlık kontrolü (Dokploy health check bunu kullanır). /// DB erişilemezse 503 döner. pub async fn health(State(state): State) -> (StatusCode, Json) { let version = env!("CARGO_PKG_VERSION"); match db::ping(&state.db).await { Ok(()) => ( StatusCode::OK, Json(json!({ "status": "ok", "db": "ok", "version": version })), ), Err(e) => { tracing::warn!(error = %e, "health: veritabanına erişilemiyor"); ( StatusCode::SERVICE_UNAVAILABLE, Json(json!({ "status": "degraded", "db": "error", "version": version })), ) } } }