Files
2026-03-15 19:53:11 +01:00

36 lines
1002 B
TypeScript

import cron from "node-cron";
import prisma from "@/lib/prisma.server";
const THIRTY_DAYS_MS = 30 * 24 * 60 * 60 * 1000;
async function purgeExpiredDeletedInvoices(): Promise<void> {
const cutoff = new Date(Date.now() - THIRTY_DAYS_MS);
const result = await prisma.invoice.deleteMany({
where: { status: "DELETED", deletedAt: { lte: cutoff } },
});
if (result.count > 0) {
console.log(
`[cleanup] ${result.count} Rechnung(en) endgültig gelöscht (vor ${cutoff.toISOString()})`
);
}
}
let scheduled = false;
export function startCleanupScheduler(): void {
if (scheduled) return;
scheduled = true;
purgeExpiredDeletedInvoices().catch((err) =>
console.error("[cleanup] Startup-Bereinigung fehlgeschlagen:", err)
);
cron.schedule("0 2 * * *", () => {
purgeExpiredDeletedInvoices().catch((err) =>
console.error("[cleanup] Geplante Bereinigung fehlgeschlagen:", err)
);
});
console.log("[cleanup] Scheduler aktiv — täglich 02:00 Uhr");
}