28 lines
1.4 KiB
Rust
28 lines
1.4 KiB
Rust
// 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")
|
||
}
|