125bb7f476
- config.rs: ortam değişkenleri ve doğrulama - db.rs: bağlantı + ping (5 sn zaman aşımı) - error.rs: AppError → Türkçe JSON hata yanıtı - /api/health: veritabanına erişilemezse 503 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
25 lines
800 B
Rust
25 lines
800 B
Rust
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<AppState>) -> (StatusCode, Json<Value>) {
|
||
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 })),
|
||
)
|
||
}
|
||
}
|
||
}
|