import { drizzle, type PostgresJsDatabase } from 'drizzle-orm/postgres-js'; import postgres from 'postgres'; import * as schema from './schema'; // Cliente perezoso: solo se conecta en el primer acceso real a la DB. // Evita que `next build` (que importa los módulos de ruta) falle si no hay // DATABASE_URL en tiempo de build. let _db: PostgresJsDatabase | null = null; function getDb(): PostgresJsDatabase { if (_db) return _db; const connectionString = process.env.DATABASE_URL; if (!connectionString) { throw new Error('DATABASE_URL no está definida. Copia .env.example a .env.local y rellénala.'); } const client = postgres(connectionString, { prepare: false }); _db = drizzle(client, { schema }); return _db; } export const db = new Proxy({} as PostgresJsDatabase, { get(_target, prop) { const instance = getDb(); const value = instance[prop as keyof typeof instance]; return typeof value === 'function' ? value.bind(instance) : value; }, }); export { schema };