2026-02-26 20:30:42 +01:00
|
|
|
import { PgBoss } from "pg-boss";
|
2026-03-03 18:16:47 +01:00
|
|
|
import Sentry from "./sentry";
|
2026-02-27 17:57:43 +01:00
|
|
|
import { registerClassifyWorker } from "./classify-ticket";
|
|
|
|
|
import { registerAutoResolveWorker } from "./auto-resolve-ticket";
|
2026-03-02 20:48:14 +01:00
|
|
|
import { registerSendEmailWorker } from "./send-email";
|
2026-02-26 20:30:42 +01:00
|
|
|
|
|
|
|
|
const boss = new PgBoss({
|
|
|
|
|
connectionString: process.env.DATABASE_URL!,
|
|
|
|
|
});
|
|
|
|
|
|
2026-03-03 18:16:47 +01:00
|
|
|
boss.on("error", (error) => {
|
|
|
|
|
Sentry.captureException(error);
|
|
|
|
|
console.error(error);
|
|
|
|
|
});
|
2026-02-26 20:30:42 +01:00
|
|
|
|
2026-02-27 17:57:43 +01:00
|
|
|
export { boss };
|
2026-02-26 20:30:42 +01:00
|
|
|
|
|
|
|
|
export async function startQueue(): Promise<void> {
|
|
|
|
|
await boss.start();
|
|
|
|
|
|
2026-02-27 17:57:43 +01:00
|
|
|
await registerClassifyWorker(boss);
|
|
|
|
|
await registerAutoResolveWorker(boss);
|
2026-03-02 20:48:14 +01:00
|
|
|
await registerSendEmailWorker(boss);
|
2026-02-26 20:30:42 +01:00
|
|
|
|
|
|
|
|
console.log("Job queue started");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export async function stopQueue(): Promise<void> {
|
|
|
|
|
await boss.stop({ graceful: true, timeout: 30000 });
|
|
|
|
|
}
|