diff --git a/packages/lib/jobs/definitions/emails/send-daily-reminder-email.ts b/packages/lib/jobs/definitions/emails/send-daily-reminder-email.ts index cd32ed4b4..b4841d315 100644 --- a/packages/lib/jobs/definitions/emails/send-daily-reminder-email.ts +++ b/packages/lib/jobs/definitions/emails/send-daily-reminder-email.ts @@ -18,7 +18,13 @@ export const SEND_DAILY_REMINDER_EMAIL_JOB = { await handler.run({ io, - interval: DocumentReminderInterval.DAILY, + intervals: [ + DocumentReminderInterval.DAILY, + DocumentReminderInterval.EVERY_3_DAYS, + DocumentReminderInterval.WEEKLY, + DocumentReminderInterval.EVERY_2_WEEKS, + DocumentReminderInterval.MONTHLY, + ], }); }, } as const satisfies JobDefinition; diff --git a/packages/lib/jobs/definitions/emails/send-hourly-reminder-email.ts b/packages/lib/jobs/definitions/emails/send-hourly-reminder-email.ts index 5a7b8af25..e8519ec9c 100644 --- a/packages/lib/jobs/definitions/emails/send-hourly-reminder-email.ts +++ b/packages/lib/jobs/definitions/emails/send-hourly-reminder-email.ts @@ -10,8 +10,7 @@ export const SEND_HOURLY_REMINDER_EMAIL_JOB = { version: '1.0.0', trigger: { type: 'cron', - // schedule: '0 * * * *', - schedule: '*/2 * * * *', + schedule: '0 * * * *', name: SEND_HOURLY_REMINDER_EMAIL_JOB_ID, }, handler: async ({ io }) => { @@ -19,7 +18,11 @@ export const SEND_HOURLY_REMINDER_EMAIL_JOB = { await handler.run({ io, - interval: DocumentReminderInterval.EVERY_1_HOUR, + intervals: [ + DocumentReminderInterval.EVERY_1_HOUR, + DocumentReminderInterval.EVERY_6_HOURS, + DocumentReminderInterval.EVERY_12_HOURS, + ], }); }, } as const satisfies JobDefinition; diff --git a/packages/lib/jobs/definitions/emails/send-monthly-reminder-email.ts b/packages/lib/jobs/definitions/emails/send-monthly-reminder-email.ts deleted file mode 100644 index eeeb768ee..000000000 --- a/packages/lib/jobs/definitions/emails/send-monthly-reminder-email.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { DocumentReminderInterval } from '@documenso/prisma/client'; - -import type { JobDefinition } from '../../client/_internal/job'; - -const SEND_MONTHLY_REMINDER_EMAIL_JOB_ID = 'send.monthly.reminder.email'; - -export const SEND_MONTHLY_REMINDER_EMAIL_JOB = { - id: SEND_MONTHLY_REMINDER_EMAIL_JOB_ID, - name: 'Send Monthly Reminder Email', - version: '1.0.0', - trigger: { - type: 'cron', - schedule: '0 0 1 * *', - name: SEND_MONTHLY_REMINDER_EMAIL_JOB_ID, - }, - handler: async ({ io }) => { - const handler = await import('./send-reminder.handler'); - - await handler.run({ - io, - interval: DocumentReminderInterval.MONTHLY, - }); - }, -} as const satisfies JobDefinition; diff --git a/packages/lib/jobs/definitions/emails/send-reminder.handler.ts b/packages/lib/jobs/definitions/emails/send-reminder.handler.ts index b051df6eb..636bdf0cd 100644 --- a/packages/lib/jobs/definitions/emails/send-reminder.handler.ts +++ b/packages/lib/jobs/definitions/emails/send-reminder.handler.ts @@ -21,21 +21,22 @@ import type { JobRunIO } from '../../client/_internal/job'; export type SendReminderHandlerOptions = { io: JobRunIO; - interval: DocumentReminderInterval; + intervals: DocumentReminderInterval[]; }; -export async function run({ io, interval }: SendReminderHandlerOptions) { +export async function run({ io, intervals }: SendReminderHandlerOptions) { const now = new Date(); + const intervalsString = intervals.join(',').toLowerCase(); const documentsToSendReminders = await io.runTask( - `find-documents-for-${interval.toLocaleUpperCase()}-reminder`, + `find-documents-for-${intervalsString}-reminder`, async () => { const documents = await prisma.document.findMany({ where: { status: DocumentStatus.PENDING, documentMeta: { reminderInterval: { - equals: interval, + in: intervals, }, }, deletedAt: null, @@ -72,7 +73,7 @@ export async function run({ io, interval }: SendReminderHandlerOptions) { }); io.logger.info( - `Found ${filteredDocuments.length} documents after filtering for interval ${interval}.`, + `Found ${filteredDocuments.length} documents after filtering for interval ${intervalsString}.`, filteredDocuments.map((d) => ({ id: d.id })), ); @@ -81,12 +82,12 @@ export async function run({ io, interval }: SendReminderHandlerOptions) { ); if (documentsToSendReminders.length === 0) { - io.logger.info(`No documents found needing ${interval.toLocaleUpperCase()} reminders.`); + io.logger.info(`No documents found needing ${intervalsString} reminders.`); return; } io.logger.info( - `Found ${documentsToSendReminders.length} documents needing ${interval.toLocaleUpperCase()} reminders.`, + `Found ${documentsToSendReminders.length} documents needing ${intervalsString} reminders.`, ); for (const document of documentsToSendReminders) { diff --git a/packages/lib/jobs/definitions/emails/send-weekly-reminder-email.ts b/packages/lib/jobs/definitions/emails/send-weekly-reminder-email.ts deleted file mode 100644 index f12845727..000000000 --- a/packages/lib/jobs/definitions/emails/send-weekly-reminder-email.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { DocumentReminderInterval } from '@documenso/prisma/client'; - -import type { JobDefinition } from '../../client/_internal/job'; - -const SEND_WEEKLY_REMINDER_EMAIL_JOB_ID = 'send.weekly.reminder.email'; - -export const SEND_WEEKLY_REMINDER_EMAIL_JOB = { - id: SEND_WEEKLY_REMINDER_EMAIL_JOB_ID, - name: 'Send Weekly Reminder Email', - version: '1.0.0', - trigger: { - type: 'cron', - schedule: '0 0 * * 0', - name: SEND_WEEKLY_REMINDER_EMAIL_JOB_ID, - }, - handler: async ({ io }) => { - const handler = await import('./send-reminder.handler'); - - await handler.run({ - io, - interval: DocumentReminderInterval.WEEKLY, - }); - }, -} as const satisfies JobDefinition;