// 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") }