(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

28
src/db.rs Normal file
View file

@ -0,0 +1,28 @@
// src/db.rs
// Почему это здесь?
// - Это всё, связанное с инициализацией и конфигурацией базы данных
// - Здесь создаётся connection pool, который переиспользуется во всём приложении
use sqlx::postgres::PgPoolOptions;
use sqlx::PgPool;
use std::env;
/// Инициализирует PgPool (connection pool для PostgreSQL)
///
/// Connection pool — это набор переиспользуемых соединений к БД.
/// Вместо того, чтобы открывать новое соединение для каждого запроса,
/// мы берём готовое соединение из пула.
///
/// Это **критически важно** для производительности:
/// - Открытие соединения — медленная операция
/// - Connection pool решает эту проблему
pub async fn init_pool() -> PgPool {
let database_url = env::var("DATABASE_URL")
.expect("DATABASE_URL must be set");
PgPoolOptions::new()
.max_connections(5) // Максимум 5 одновременных соединений
.connect(&database_url)
.await
.expect("Failed to create Postgres connection pool")
}