use sea_orm::{ConnectOptions, Database, DatabaseConnection, DbErr};
use std::time::Duration;
use tracing::{error, info};
pub async fn create_mysql_connection(db_url: String) -> Result<DatabaseConnection, DbErr> {
let mut opt = ConnectOptions::new(db_url.clone());
opt.max_connections(3)
.min_connections(1)
.connect_timeout(Duration::from_secs(8))
.acquire_timeout(Duration::from_secs(8))
.idle_timeout(Duration::from_secs(300))
.max_lifetime(Duration::from_secs(300))
.sqlx_logging(false);
let db: DatabaseConnection = Database::connect(opt).await?;
match db.ping().await {
Ok(_) => {
info!("Connected to MySQL");
Ok(db)
}
Err(e) => {
error!("Error connecting to MySQL: {}", e);
Err(e)
}
}
}