use crate::config::AppConfig;
use sea_orm::{ConnectOptions, Database, DatabaseConnection};
use std::time::Duration;
pub async fn connect_db(config: &AppConfig) -> anyhow::Result<DatabaseConnection> {
let mut opt = ConnectOptions::new(config.database_url.clone());
opt.max_connections(config.db_max_connections)
.min_connections(config.db_min_connections)
.connect_timeout(Duration::from_secs(config.db_connect_timeout))
.acquire_timeout(Duration::from_secs(config.db_connect_timeout))
.idle_timeout(Duration::from_secs(config.db_idle_timeout))
.max_lifetime(Duration::from_secs(config.db_max_lifetime))
.sqlx_logging(true)
.sqlx_logging_level(tracing::log::LevelFilter::Info);
let db = Database::connect(opt).await?;
tracing::info!("Database connection established");
Ok(db)
}