This commit is contained in:
commit
59bb5a38a3
132 files changed
+19435
No files matched your search
@@ -0,0 +1,34 @@
|
||||
/**
|
||||
* Hintergrundlauf fuer Reservierungen, Folgeraten, Zahlungsmethoden und
|
||||
* E-Mails. Im Cluster als Kubernetes-CronJob (k8s/base/cronjob-worker.yaml),
|
||||
* lokal per `pnpm worker`.
|
||||
*
|
||||
* Endet mit Exit-Code 1, wenn etwas fehlschlaegt — der CronJob-Lauf wird
|
||||
* dann als fehlgeschlagen sichtbar statt still im Log zu verschwinden.
|
||||
*/
|
||||
import { getDb } from "@/lib/db";
|
||||
import { env, requireAppSecret } from "@/lib/env";
|
||||
import { getGateway } from "@/lib/payment-gateway";
|
||||
import { runWorker } from "@/lib/worker-jobs";
|
||||
|
||||
try {
|
||||
process.loadEnvFile();
|
||||
} catch {
|
||||
// Im Container kommen die Variablen aus der Umgebung.
|
||||
}
|
||||
|
||||
const db = getDb();
|
||||
try {
|
||||
const result = await runWorker(db, getGateway(), {
|
||||
now: new Date(),
|
||||
secret: requireAppSecret(),
|
||||
adminEmail: env().ADMIN_NOTIFY_EMAIL ?? null,
|
||||
});
|
||||
console.log(`[worker] ${new Date().toISOString()} ${JSON.stringify(result)}`);
|
||||
process.exitCode = result.emails.failed > 0 ? 1 : 0;
|
||||
} catch (error) {
|
||||
console.error(`[worker] Abbruch: ${error instanceof Error ? error.message : "unbekannter Fehler"}`);
|
||||
process.exitCode = 1;
|
||||
} finally {
|
||||
await db.$disconnect();
|
||||
}
|
||||
Reference in new issue
Block a user