import mysql from 'mysql2/promise';

// Mapa para cachear los pools de conexiones por cada base de datos (cliente)
const pools = new Map<string, any>();

export function getClientPool(config?: { database: string }) {
    const dbName = config?.database || process.env.DB_NAME || 'formagest';

    if (pools.has(dbName)) {
        return pools.get(dbName);
    }

    const pool = mysql.createPool({
        host: process.env.DB_HOST,
        user: process.env.DB_USER,
        password: process.env.DB_PASSWORD,
        database: dbName,
        port: parseInt(process.env.DB_PORT || '3306'),
        waitForConnections: true,
        connectionLimit: 10,
        queueLimit: 0,
    });

    pools.set(dbName, pool);
    return pool;
}

// Por defecto exportamos el pool de la DB principal configurada en .env
const defaultPool = getClientPool();
export default defaultPool;
