import { drizzle } from 'drizzle-orm/node-postgres'; import { Pool } from 'pg'; import { schema } from './schema'; type AppDrizzleDb = ReturnType; declare global { // eslint-disable-next-line no-var var __fiscalPgPool: Pool | undefined; // eslint-disable-next-line no-var var __fiscalDrizzleDb: AppDrizzleDb | undefined; } function getConnectionString() { const connectionString = process.env.DATABASE_URL?.trim(); if (!connectionString) { throw new Error('DATABASE_URL is required for PostgreSQL.'); } return connectionString; } export function getPool() { if (!globalThis.__fiscalPgPool) { globalThis.__fiscalPgPool = new Pool({ connectionString: getConnectionString() }); } return globalThis.__fiscalPgPool; } function createDb() { return drizzle(getPool(), { schema }); } export const db = globalThis.__fiscalDrizzleDb ?? createDb(); if (!globalThis.__fiscalDrizzleDb) { globalThis.__fiscalDrizzleDb = db; }