import type { Pool } from 'pg'; import { createPool } from '../../src/db/pool.ts'; import { migrate } from '../../src/db/migrate.ts'; let pool: Pool | undefined; export async function getTestPool(): Promise { if (!pool) { pool = createPool(process.env.TEST_DATABASE_URL!); await migrate(pool); } return pool; } export async function resetDb(p: Pool): Promise { const { rows } = await p.query<{ tablename: string }>( `SELECT tablename FROM pg_tables WHERE schemaname = 'public' AND tablename <> 'schema_migrations'`, ); if (rows.length === 0) return; await p.query(`TRUNCATE ${rows.map((r) => `"${r.tablename}"`).join(', ')} RESTART IDENTITY CASCADE`); } export async function closeTestPool(): Promise { await pool?.end(); pool = undefined; }