import mysql from "mysql2/promise";

declare global {
  // eslint-disable-next-line no-var
  var audessaMysqlPool: mysql.Pool | undefined;
}

function required(name: string): string {
  const value = process.env[name];
  if (!value) throw new Error(`Missing required environment variable: ${name}`);
  return value;
}

export const pool = global.audessaMysqlPool ?? mysql.createPool({
  host: required("MYSQL_HOST"),
  port: Number(process.env.MYSQL_PORT || 3306),
  database: required("MYSQL_DATABASE"),
  user: required("MYSQL_USER"),
  password: required("MYSQL_PASSWORD"),
  ssl: process.env.MYSQL_SSL === "true" ? {} : undefined,
  connectionLimit: 10,
  enableKeepAlive: true,
});

if (process.env.NODE_ENV !== "production") global.audessaMysqlPool = pool;

