fix: use in-memory startedAt for cron job log to survive DB restore

The auto-import wipes the database, destroying the cronJobLog record
created at the start of the job. Now duration is calculated from a
local variable instead of querying the DB, and if the record is gone
a fresh log entry is created in the restored database.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Summit Dental Care
2026-06-26 22:55:07 -04:00
co-authored by Claude Sonnet 4.6
parent 1edf73fdc8
commit 27d9132820
308 changed files with 2570 additions and 1816 deletions
@@ -24,14 +24,22 @@ export const cronJobLogStorage = {
async completeJobLog(
id: number,
jobName: string,
startedAt: Date,
status: CronJobStatus,
completedAt: Date,
errorMessage?: string
): Promise<CronJobLogEntry> {
const durationMs = completedAt.getTime() - (await db.cronJobLog.findUniqueOrThrow({ where: { id } })).startedAt.getTime();
return db.cronJobLog.update({
where: { id },
data: { status, completedAt, durationMs, errorMessage: errorMessage ?? null },
const durationMs = completedAt.getTime() - startedAt.getTime();
const existing = await db.cronJobLog.findUnique({ where: { id } });
if (existing) {
return db.cronJobLog.update({
where: { id },
data: { status, completedAt, durationMs, errorMessage: errorMessage ?? null },
});
}
return db.cronJobLog.create({
data: { jobName, status, startedAt, completedAt, durationMs, errorMessage: errorMessage ?? null },
});
},