31 lines
1.0 KiB
TypeScript
31 lines
1.0 KiB
TypeScript
// src/lib/prisma.ts
|
|
// ✅ CORRECCIÓN: Validación de DATABASE_URL + configuración del pool de conexiones
|
|
|
|
import { PrismaClient } from '@prisma/client';
|
|
import { Pool } from 'pg';
|
|
import { PrismaPg } from '@prisma/adapter-pg';
|
|
|
|
const globalForPrisma = global as unknown as { prisma: PrismaClient };
|
|
|
|
const connectionString = process.env.DATABASE_URL;
|
|
|
|
if (!connectionString) {
|
|
throw new Error(
|
|
"❌ DATABASE_URL is not defined. " +
|
|
"Make sure it's set in your .env file or Docker environment variables. " +
|
|
"Example: DATABASE_URL=postgresql://user:password@db:5432/flux"
|
|
);
|
|
}
|
|
|
|
const pool = new Pool({
|
|
connectionString,
|
|
max: 10, // Máximo de conexiones simultáneas
|
|
idleTimeoutMillis: 30000, // Cerrar conexiones inactivas después de 30s
|
|
connectionTimeoutMillis: 5000, // Timeout al intentar conectar
|
|
});
|
|
|
|
const adapter = new PrismaPg(pool as any);
|
|
|
|
export const prisma = globalForPrisma.prisma || new PrismaClient({ adapter });
|
|
|
|
if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma; |