/**
 * app.ts
 * Punto de entrada de la aplicación.
 * - Inicia el servidor
 * - Conecta a la base de datos
 * - Maneja errores globales
 */

import "dotenv/config";
import { env } from "./config/env.js";
import { AppRoutes } from "./presentation/routes.js";
import { Server } from "./presentation/server.js";
import { prisma } from "./data/postgres/index.js";

async function main() {
  try {
    // Verificar conexión a la base de datos
    await prisma.$connect();
    console.log("✓ Database connected");

    // Crear y iniciar el servidor
    const server = new Server({
      port: env.PORT,
      routes: AppRoutes.routes,
    });

    await server.start();
  } catch (error) {
    console.error("✗ Error starting application:", error);
    process.exit(1);
  }
}

main();