shindo_coding_utils 0.3.4

A utils crates which will be used in various micro-services
Documentation
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)
        }
    }
}