import * as queue from '../../lib/jobs/queue.js'; import { pool } from '../../lib/db/pool.js'; export async function stopBoss() { try { await queue.stop(); } catch { /* ignore */ } try { await pool.query('DROP SCHEMA IF EXISTS pgboss CASCADE'); } catch { /* ignore */ } } export async function waitForJob(name, id, { timeoutMs = 5_000 } = {}) { const boss = queue.instance(); if (!boss) throw new Error('queue not started'); const start = Date.now(); while (Date.now() - start < timeoutMs) { const j = await boss.getJobById(name, id, { includeArchive: true }); if (j && ['completed','failed','cancelled','expired'].includes(j.state)) return j; await new Promise(r => setTimeout(r, 50)); } throw new Error(`job ${name} ${id} did not finish in ${timeoutMs} ms`); }