[update] enhanced database connection pooling with configurable options (max_connections
, min_connections
, timeouts) and added detailed error context for migration failures
This commit is contained in:
@@ -1,9 +1,10 @@
|
||||
use crate::config::{AppSettings};
|
||||
use anyhow::Result;
|
||||
use crate::config::AppSettings;
|
||||
use anyhow::{Context, Result};
|
||||
use sqlx::migrate::Migrator;
|
||||
use sqlx::sqlite::{SqliteConnectOptions};
|
||||
use sqlx::sqlite::{SqliteConnectOptions, SqlitePoolOptions};
|
||||
use sqlx::{Pool, Sqlite, SqlitePool};
|
||||
use std::str::FromStr;
|
||||
use std::time::Duration;
|
||||
use tracing::info;
|
||||
|
||||
pub const MIGRATOR: Migrator = sqlx::migrate!("./migrations");
|
||||
@@ -16,9 +17,15 @@ pub async fn initialize_db(app_settings: &AppSettings) -> Result<Pool<Sqlite>> {
|
||||
.journal_mode(sqlx::sqlite::SqliteJournalMode::Wal)
|
||||
.foreign_keys(true);
|
||||
|
||||
let pool = SqlitePool::connect_with(options).await?;
|
||||
let pool = SqlitePoolOptions::new()
|
||||
.max_connections(20)
|
||||
.min_connections(5)
|
||||
.acquire_timeout(Duration::from_secs(30))
|
||||
.idle_timeout(Duration::from_secs(600))
|
||||
.connect_with(options)
|
||||
.await?;
|
||||
|
||||
MIGRATOR.run(&pool).await?;
|
||||
MIGRATOR.run(&pool).await.with_context(|| "Database migrations failed")?;
|
||||
info!("Database migrations completed successfully");
|
||||
|
||||
Ok(pool)
|
||||
|
Reference in New Issue
Block a user