From 2dae0bfb8c72b51aa49260dc1f7f215a6290f3a6 Mon Sep 17 00:00:00 2001 From: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com> Date: Mon, 13 May 2024 09:25:22 -0400 Subject: [PATCH] fix: add retryCount to workflowReminder (#14943) * add retry count to workflow reminder * add logic to for retry count --------- Co-authored-by: CarinaWolli Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com> --- .../ee/workflows/api/scheduleSMSReminders.ts | 41 ++++++++++++++++--- .../migration.sql | 2 + packages/prisma/schema.prisma | 1 + 3 files changed, 38 insertions(+), 6 deletions(-) create mode 100644 packages/prisma/migrations/20240508134359_add_retry_count_to_workflow_reminder/migration.sql diff --git a/packages/features/ee/workflows/api/scheduleSMSReminders.ts b/packages/features/ee/workflows/api/scheduleSMSReminders.ts index 299d9bac63..a6d7f46740 100644 --- a/packages/features/ee/workflows/api/scheduleSMSReminders.ts +++ b/packages/features/ee/workflows/api/scheduleSMSReminders.ts @@ -28,10 +28,19 @@ async function handler(req: NextApiRequest, res: NextApiResponse) { //delete all scheduled sms reminders where scheduled date is past current date await prisma.workflowReminder.deleteMany({ where: { - method: WorkflowMethods.SMS, - scheduledDate: { - lte: dayjs().toISOString(), - }, + OR: [ + { + method: WorkflowMethods.SMS, + scheduledDate: { + lte: dayjs().toISOString(), + }, + }, + { + retryCount: { + gt: 1, + }, + }, + ], }, }); @@ -44,8 +53,11 @@ async function handler(req: NextApiRequest, res: NextApiResponse) { lte: dayjs().add(7, "day").toISOString(), }, }, - select, - })) as PartialWorkflowReminder[]; + select: { + ...select, + retryCount: true, + }, + })) as (PartialWorkflowReminder & { retryCount: number })[]; if (!unscheduledReminders.length) { res.json({ ok: true }); @@ -163,9 +175,26 @@ async function handler(req: NextApiRequest, res: NextApiResponse) { referenceId: scheduledSMS.sid, }, }); + } else { + await prisma.workflowReminder.update({ + where: { + id: reminder.id, + }, + data: { + retryCount: reminder.retryCount + 1, + }, + }); } } } catch (error) { + await prisma.workflowReminder.update({ + where: { + id: reminder.id, + }, + data: { + retryCount: reminder.retryCount + 1, + }, + }); console.log(`Error scheduling SMS with error ${error}`); } } diff --git a/packages/prisma/migrations/20240508134359_add_retry_count_to_workflow_reminder/migration.sql b/packages/prisma/migrations/20240508134359_add_retry_count_to_workflow_reminder/migration.sql new file mode 100644 index 0000000000..58e4124a58 --- /dev/null +++ b/packages/prisma/migrations/20240508134359_add_retry_count_to_workflow_reminder/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "WorkflowReminder" ADD COLUMN "retryCount" INTEGER NOT NULL DEFAULT 0; diff --git a/packages/prisma/schema.prisma b/packages/prisma/schema.prisma index e2ab07595a..1085d72dfb 100644 --- a/packages/prisma/schema.prisma +++ b/packages/prisma/schema.prisma @@ -997,6 +997,7 @@ model WorkflowReminder { cancelled Boolean? seatReferenceId String? isMandatoryReminder Boolean? @default(false) + retryCount Int @default(0) @@index([bookingUid]) @@index([workflowStepId])