import knex, { Knex } from 'knex';
import { env } from './env';
import { logger } from '../shared/utils/logger';

const config: Knex.Config = {
  client: 'mysql2',
  connection: {
    host: env.DB_HOST,
    port: env.DB_PORT,
    database: env.DB_NAME,
    user: env.DB_USER,
    password: env.DB_PASSWORD
  },
  pool: {
    min: env.DB_POOL_MIN,
    max: env.DB_POOL_MAX,
    idleTimeoutMillis: 30000,
    acquireTimeoutMillis: 5000,
  },
  debug: env.NODE_ENV === 'development',
};

export const db = knex(config);

export async function checkDatabaseConnection(): Promise<void> {
  try {
    await db.raw('SELECT 1');
    logger.info('✅ Conexión a MySQL establecida');
  } catch (error) {
    logger.error('❌ No se pudo conectar a MySQL', { error });
    process.exit(1);
  }
}
