use std::sync::OnceLock;
use sqlx::{Pool, MySql, mysql::MySqlPoolOptions};
use zirv_config::read_config;
static DB_POOL: OnceLock<Pool<MySql>> = OnceLock::new();
pub async fn init_db_pool() {
let max_database_connections: u32 = read_config!("database.max_connections", u32).unwrap_or(10);
let database_url = read_config!("database.url", String).unwrap();
let pool = MySqlPoolOptions::new()
.max_connections(max_database_connections)
.connect(&database_url)
.await
.expect("Failed to create MySQL pool.");
DB_POOL
.set(pool)
.expect("DB_POOL can only be initialized once!");
}
pub fn get_db_pool() -> &'static Pool<MySql> {
DB_POOL
.get()
.expect("DB pool not initialized! Call init_db_pool first.")
}