(refactor) more clean architecture

This commit is contained in:
Rorik Star Platinum 2025-11-05 00:10:18 +03:00
parent 0a45d6e139
commit 8a03bdee96
8 changed files with 278 additions and 53 deletions

40
src/route/handlers.rs Normal file
View file

@ -0,0 +1,40 @@
// src/route/handlers.rs
// Почему это здесь?
// - Это всё, что обрабатывает HTTP запросы
// - Каждый handler'а — это async функция, которая обрабатывает запрос и возвращает ответ
use axum::{
extract::State,
http::StatusCode,
response::IntoResponse,
Json,
};
use serde_json::json;
use crate::AppState;
/// Health-check handler
///
/// Что он делает:
/// 1. Принимает AppState через extract::State (это параметр, который Axum инжектирует)
/// 2. Пытается выполнить простой SELECT 1 в БД (проверка подключения)
/// 3. Возвращает 200 OK если всё хорошо, или 500 если БД недоступна
pub async fn health_handler(
State(state): State<AppState>,
) -> impl IntoResponse {
// Пытаемся выполнить простой запрос к БД
let result = sqlx::query("SELECT 1")
.execute(&state.db_pool)
.await;
// Обрабатываем результат
match result {
Ok(_) => (
StatusCode::OK,
Json(json!({ "status": "Database connection is successful." })),
).into_response(),
Err(e) => (
StatusCode::INTERNAL_SERVER_ERROR,
Json(json!({ "status": format!("Database connection failed: {}", e) })),
).into_response(),
}
}