import mysql from 'mysql2/promise';

let pool: mysql.Pool | null = null;

export function getFaceVerifyDbName(): string {
  return (
    process.env.FACE_VERIFY_DB ||
    process.env.DB_NAME2 ||
    process.env.DB_NAME1 ||
    'cp164568_lerning'
  );
}

export function getLearningPool(): mysql.Pool {
  if (!pool) {
    pool = mysql.createPool({
      host: process.env.DB_HOST || '127.0.0.1',
      port: Number(process.env.DB_PORT || 3306),
      user: process.env.DB_USER || 'root',
      password: process.env.DB_PASSWORD || '',
      database: getFaceVerifyDbName(),
      waitForConnections: true,
      connectionLimit: Number(process.env.DB_POOL_FACE_LIMIT || 10),
      queueLimit: Number(process.env.DB_POOL_QUEUE_LIMIT || 50),
      charset: 'utf8mb4',
    });
  }
  return pool;
}

export function isFaceVerifyEnabled(): boolean {
  const v = (process.env.FACE_VERIFY_ENABLED || '').trim().toLowerCase();
  return v === '1' || v === 'true' || v === 'yes';
}

export function getReferenceImageBaseUrl(): string {
  const base = (
    process.env.FACE_REFERENCE_IMAGE_BASE ||
    'http://127.0.0.1:8080/image/getimages/students'
  ).trim();
  return base.replace(/\/+$/, '');
}

export function getIueDbName(): string {
  return process.env.FACE_REFERENCE_DB || process.env.DB_NAME1 || 'cp164568_iue';
}

let iuePool: mysql.Pool | null = null;

export function getIuePool(): mysql.Pool {
  if (!iuePool) {
    iuePool = mysql.createPool({
      host: process.env.DB_HOST || '127.0.0.1',
      port: Number(process.env.DB_PORT || 3306),
      user: process.env.DB_USER || 'root',
      password: process.env.DB_PASSWORD || '',
      database: getIueDbName(),
      waitForConnections: true,
      connectionLimit: Number(process.env.DB_POOL_FACE_LIMIT || 10),
      queueLimit: Number(process.env.DB_POOL_QUEUE_LIMIT || 50),
      charset: 'utf8mb4',
    });
  }
  return iuePool;
}
