import 'dotenv/config';
import app from './app';
import { env } from './config/env';
import { checkDatabaseConnection } from './config/database';
import { logger } from './shared/utils/logger';

async function bootstrap(): Promise<void> {
  await checkDatabaseConnection();

  const server = app.listen(env.PORT, () => {
    logger.info(`🚀 API corriendo en http://localhost:${env.PORT}/api/${env.API_VERSION}`);
    logger.info(`🌍 Entorno: ${env.NODE_ENV}`);
  });

  const shutdown = (signal: string) => {
    logger.info(`${signal} recibido. Cerrando servidor...`);
    server.close(() => {
      logger.info('Servidor cerrado. Bye 👋');
      process.exit(0);
    });
  };

  process.on('SIGTERM', () => shutdown('SIGTERM'));
  process.on('SIGINT', () => shutdown('SIGINT'));
}

bootstrap().catch((err) => {
  console.error('Error fatal al iniciar:', err);
  process.exit(1);
});
