use std::sync::LazyLock;

use ek_base::config::get_ek_settings;

use diesel_async::AsyncPgConnection;
use diesel_async::pooled_connection::AsyncDieselConnectionManager;
use diesel_async::pooled_connection::deadpool::Pool;

pub static POOL: LazyLock<Pool<AsyncPgConnection>> = LazyLock::new(|| {
    let settings = get_ek_settings();
    log::debug!("connect to database {}", settings.db.db_dsn.clone());
    let config = AsyncDieselConnectionManager::<diesel_async::AsyncPgConnection>::new(
        settings.db.db_dsn.clone(),
    );
    Pool::builder(config)
        .max_size(settings.db.max_conn_size)
        .build()
        .unwrap()
});