fix(scheduler): flip one-off reminders to 'ended' after firing
A fired one-off reminder was staying active forever in the DB and showing
🟢 in the Reminders list. Update reminders.status to 'ended' once a one-off
has fired (regardless of run outcome — one-off is done after one attempt).
Recurring reminders stay 'active' — they have more occurrences pending.
This commit is contained in:
parent
6a221fe043
commit
92deaf1032
@ -1,5 +1,5 @@
|
|||||||
import { eq } from "drizzle-orm";
|
import { eq } from "drizzle-orm";
|
||||||
import { reminderRuns, reminderRunTargets } from "@cmbot/db";
|
import { reminderRuns, reminderRunTargets, reminders } from "@cmbot/db";
|
||||||
import { db } from "../db.js";
|
import { db } from "../db.js";
|
||||||
import { logger } from "../logger.js";
|
import { logger } from "../logger.js";
|
||||||
import { sessionManager } from "../whatsapp/session-manager.js";
|
import { sessionManager } from "../whatsapp/session-manager.js";
|
||||||
@ -119,6 +119,16 @@ export async function fireReminder(payload: FireReminderPayload): Promise<void>
|
|||||||
.set({ status })
|
.set({ status })
|
||||||
.where(eq(reminderRuns.id, runId));
|
.where(eq(reminderRuns.id, runId));
|
||||||
|
|
||||||
|
// One-off reminders are done after firing — flip them to 'ended' so the
|
||||||
|
// menu shows ⚪ instead of 🟢. Recurring reminders stay 'active' (more
|
||||||
|
// occurrences pending; recurring is a future-plan feature).
|
||||||
|
if (reminder.scheduleKind === "one_off") {
|
||||||
|
await db
|
||||||
|
.update(reminders)
|
||||||
|
.set({ status: "ended", updatedAt: new Date() })
|
||||||
|
.where(eq(reminders.id, reminder.id));
|
||||||
|
}
|
||||||
|
|
||||||
await writeAuditLog(db, {
|
await writeAuditLog(db, {
|
||||||
operatorId: reminder.createdBy,
|
operatorId: reminder.createdBy,
|
||||||
source: "system",
|
source: "system",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user