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 { reminderRuns, reminderRunTargets } from "@cmbot/db";
|
||||
import { reminderRuns, reminderRunTargets, reminders } from "@cmbot/db";
|
||||
import { db } from "../db.js";
|
||||
import { logger } from "../logger.js";
|
||||
import { sessionManager } from "../whatsapp/session-manager.js";
|
||||
@ -119,6 +119,16 @@ export async function fireReminder(payload: FireReminderPayload): Promise<void>
|
||||
.set({ status })
|
||||
.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, {
|
||||
operatorId: reminder.createdBy,
|
||||
source: "system",
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user