(refactor) more clean architecture
This commit is contained in:
parent
0a45d6e139
commit
8a03bdee96
8 changed files with 278 additions and 53 deletions
28
src/db.rs
Normal file
28
src/db.rs
Normal 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")
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue