/**
 * ========================================
 * CONFIGURACIÓN DE BASE DE DATOS
 * ========================================
 *
 * Este módulo configura el pool de conexiones a MySQL.
 * Un pool reutiliza conexiones en lugar de crear una nueva cada vez,
 * mejorando el rendimiento de la aplicación.
 *
 * ORIGEN: Se importa en las rutas que necesitan acceso a la BD
 * DESTINO: Todas las rutas que hacen queries (auth, actividades, etc.)
 *
 * EJEMPLO DE USO:
 *   const pool = require('./config/db');
 *   const [rows] = await pool.query('SELECT * FROM usuarios');
 */

const mysql = require('mysql2/promise');

// ========================================
// CREACIÓN DEL POOL DE CONEXIONES
// ========================================
// Un pool mantiene múltiples conexiones abiertas y las reutiliza
// para mejorar el rendimiento vs crear/cerrar conexiones constantemente

const pool = mysql.createPool({
  // Datos de conexión (provienen del archivo .env)
  host: process.env.DB_HOST,        // Dirección del servidor MySQL (ej: localhost)
  user: process.env.DB_USER,        // Usuario de MySQL
  password: process.env.DB_PASS,    // Contraseña del usuario
  database: process.env.DB_NAME,    // Nombre de la base de datos a usar
  port: Number(process.env.DB_PORT || 3306), // Puerto (3306 por defecto)

  // Configuración del pool
  waitForConnections: true,   // Si no hay conexiones disponibles, esperar en vez de error
  connectionLimit: 10,        // Máximo 10 conexiones simultáneas en el pool
  queueLimit: 0,              // Sin límite de peticiones en espera (0 = infinito)

  // Características adicionales
  namedPlaceholders: true,    // Permite usar :nombre en queries (ej: WHERE id = :id)
  connectTimeout: 10000       // Timeout de 10 segundos para conectar
});

// Log de diagnóstico para verificar la configuración
console.log('[DB CONFIG] Host:', process.env.DB_HOST);

// ========================================
// EXPORTACIÓN
// ========================================
// Este pool se importa en todas las rutas que necesitan hacer queries
// Ejemplo: const pool = require('../config/db');
module.exports = pool;