// FILE: backend/src/db/index.js (ESM)
import mysql from "mysql2/promise";

const {
  DB_HOST = "mariadb",
  DB_PORT = "3306",
  DB_USER = "center",
  DB_PASSWORD = "Center#2025",
  DB_NAME = "dms",
  DB_CONN_LIMIT = "10",
} = process.env;

const pool = mysql.createPool({
  host: DB_HOST,
  port: Number(DB_PORT),
  user: DB_USER,
  password: DB_PASSWORD,
  database: DB_NAME,
  connectionLimit: Number(DB_CONN_LIMIT),
  waitForConnections: true,
  namedPlaceholders: true,
  dateStrings: true, // คงวันที่เป็น string
  timezone: "Z", // ใช้ UTC
});

/**
 * เรียก Stored Procedure แบบง่าย
 * @param {string} procName ชื่อโปรซีเยอร์ เช่น "sp_rfa_create_with_items"
 * @param {Array<any>} params ลำดับพารามิเตอร์
 * @returns {Promise<any>} rows จาก CALL
 */
export async function callProc(procName, params = []) {
  const placeholders = params.map(() => "?").join(",");
  const sql = `CALL ${procName}(${placeholders})`;
  const [rows] = await pool.query(sql, params);
  return rows;
}

export default pool; // ใช้ sql.query(...) ได้ตามที่ routes เรียกอยู่
