dow-prod-tracker/src/instrumentation.ts
2026-03-17 23:07:44 -05:00

45 lines
1.3 KiB
TypeScript

/**
* Next.js Instrumentation — runs once on server startup.
*
* Sets up:
* - Automation event handler registration
* - Hourly deadline scheduler
*/
export async function register() {
if (process.env.NEXT_RUNTIME === "nodejs") {
// Register automation event handler (side-effect import)
await import("@/lib/services/automation-service");
// Start hourly deadline check
const { emitDeadlineEvents } = await import(
"@/lib/services/deadline-service"
);
const { prisma } = await import("@/lib/prisma");
const HOUR_MS = 60 * 60 * 1000;
const runDeadlineCheck = async () => {
try {
const orgs = await prisma.organization.findMany({
select: { id: true },
});
for (const org of orgs) {
await emitDeadlineEvents(org.id);
}
console.log(
`[Deadline Scheduler] Checked ${orgs.length} org(s) for deadlines`
);
} catch (err) {
console.error("[Deadline Scheduler] Error:", err);
}
};
// Initial check after 30s (let server fully start)
setTimeout(runDeadlineCheck, 30_000);
// Then every hour
setInterval(runDeadlineCheck, HOUR_MS);
console.log("[Instrumentation] Deadline scheduler registered (hourly)");
}
}