← back to Dw Boardroom Governance
src/db/db.ts
31 lines
import { Pool, QueryResult } from 'pg';
import dotenv from 'dotenv';
dotenv.config();
export const pool = new Pool({
connectionString: process.env.DATABASE_URL,
max: 10,
idleTimeoutMillis: 30000,
connectionTimeoutMillis: 5000
});
pool.on('error', (err) => {
console.error('[Governance DB] Unexpected pool error:', err.message);
});
export async function query<T extends Record<string, any> = Record<string, any>>(text: string, params?: any[]): Promise<T[]> {
const result = await pool.query(text, params);
return result.rows as T[];
}
export async function queryOne<T extends Record<string, any> = Record<string, any>>(text: string, params?: any[]): Promise<T | null> {
const rows = await query<T>(text, params);
return rows[0] || null;
}
export async function execute(text: string, params?: any[]): Promise<number> {
const result = await pool.query(text, params);
return result.rowCount || 0;
}