import pg from 'pg'; import { config } from '../config.js'; import { logger } from '../observability/logger.js'; const { Pool } = pg; const pool = new Pool({ host: config.db.host, port: config.db.port, database: config.db.name, user: config.db.user, password: config.db.password, max: 20, idleTimeoutMillis: 30_000, connectionTimeoutMillis: 5_000, }); pool.on('error', (err) => { logger.error({ err }, 'Unexpected PostgreSQL pool error'); }); export async function query( text: string, params?: readonly unknown[], ): Promise> { const start = Date.now(); const result = await pool.query(text, params as unknown[]); const latency = Date.now() - start; if (latency > 500) { logger.warn({ latency, query: text.slice(0, 80) }, 'Slow query detected'); } return result; } export async function closePool(): Promise { await pool.end(); }