From 584bd2413b79960c9084e39d9e3fe62017d1522e Mon Sep 17 00:00:00 2001 From: Artem Niehrieiev Date: Fri, 16 May 2025 09:01:39 +0000 Subject: [PATCH] feat: add CURRENT_TIME_FORMATTED utility and update cron job logging to use formatted time --- .../entities/cron-jobs/cron-jobs.service.ts | 52 +++++++++++-------- backend/src/helpers/constants/constants.ts | 6 +++ 2 files changed, 37 insertions(+), 21 deletions(-) diff --git a/backend/src/entities/cron-jobs/cron-jobs.service.ts b/backend/src/entities/cron-jobs/cron-jobs.service.ts index b6b853c82..2aab070a2 100644 --- a/backend/src/entities/cron-jobs/cron-jobs.service.ts +++ b/backend/src/entities/cron-jobs/cron-jobs.service.ts @@ -33,13 +33,15 @@ export class CronJobsService { if (!isJobAdded) { return; } - const startTime = new Date(); - const startTimeString = `${startTime.getHours()}:${startTime.getMinutes()}:${startTime.getSeconds()}`; - await slackPostMessage(`midnight cron started at ${startTimeString}`, Constants.EXCEPTIONS_CHANNELS); + await slackPostMessage( + `midnight cron started at ${Constants.CURRENT_TIME_FORMATTED()}`, + Constants.EXCEPTIONS_CHANNELS, + ); await this.checkUsersLogsAndUpdateActionsUseCase.execute(); - const endTime = new Date(); - const endTimeString = `${endTime.getHours()}:${endTime.getMinutes()}:${endTime.getSeconds()}`; - await slackPostMessage(`midnight cron finished at ${endTimeString}`, Constants.EXCEPTIONS_CHANNELS); + await slackPostMessage( + `midnight cron finished at ${Constants.CURRENT_TIME_FORMATTED()}`, + Constants.EXCEPTIONS_CHANNELS, + ); } catch (e) { Sentry.captureException(e); console.error(e); @@ -53,9 +55,11 @@ export class CronJobsService { if (!isJobAdded) { return; } - const startTime = new Date(); - const startTimeString = `${startTime.getHours()}:${startTime.getMinutes()}:${startTime.getSeconds()}`; - await slackPostMessage(`email cron started at ${startTimeString}`, Constants.EXCEPTIONS_CHANNELS); + + await slackPostMessage( + `email cron started at ${Constants.CURRENT_TIME_FORMATTED()}`, + Constants.EXCEPTIONS_CHANNELS, + ); const emails = await this.checkUsersActionsAndMailingUsersUseCase.execute(); await slackPostMessage(`found ${emails.length} emails. starting messaging`, Constants.EXCEPTIONS_CHANNELS); @@ -63,19 +67,16 @@ export class CronJobsService { if (mailingResults.length === 0) { const mailingResultToString = 'Sending emails triggered, but no emails sent (no users found)'; await slackPostMessage(mailingResultToString, Constants.EXCEPTIONS_CHANNELS); - const endTime = new Date(); - const endTimeString = `${endTime.getHours()}:${endTime.getMinutes()}:${endTime.getSeconds()}`; - await slackPostMessage(`morning cron finished at ${endTimeString}`, Constants.EXCEPTIONS_CHANNELS); + await slackPostMessage( + `morning cron finished at ${Constants.CURRENT_TIME_FORMATTED()}`, + Constants.EXCEPTIONS_CHANNELS, + ); } else { - const mailingResultToString = this.emailCronResultToSlackString(mailingResults); - if (mailingResultToString) { - await slackPostMessage(mailingResultToString, Constants.EXCEPTIONS_CHANNELS); - } else { - await slackPostMessage(JSON.stringify(mailingResults), Constants.EXCEPTIONS_CHANNELS); - } - const endTime = new Date(); - const endTimeString = `${endTime.getHours()}:${endTime.getMinutes()}:${endTime.getSeconds()}`; - await slackPostMessage(`morning cron finished at ${endTimeString}`, Constants.EXCEPTIONS_CHANNELS); + await this.sendEmailResultsToSlack(mailingResults); + await slackPostMessage( + `morning cron finished at ${Constants.CURRENT_TIME_FORMATTED()}`, + Constants.EXCEPTIONS_CHANNELS, + ); } } catch (e) { Sentry.captureException(e); @@ -124,4 +125,13 @@ export class CronJobsService { return null; } } + + private async sendEmailResultsToSlack(results: Array): Promise { + const chunkSize = 20; + for (let i = 0; i < results.length; i += chunkSize) { + const chunk = results.slice(i, i + chunkSize); + const message = this.emailCronResultToSlackString(chunk); + await slackPostMessage(message, Constants.EXCEPTIONS_CHANNELS); + } + } } diff --git a/backend/src/helpers/constants/constants.ts b/backend/src/helpers/constants/constants.ts index 44c7348c6..84c8c25ca 100644 --- a/backend/src/helpers/constants/constants.ts +++ b/backend/src/helpers/constants/constants.ts @@ -53,6 +53,12 @@ export const Constants = { PASSWORD_LENGTH: 256, DIGEST: 'sha512', + CURRENT_TIME_FORMATTED: (): string => { + const now = new Date(); + const padString = (n: number) => n.toString().padStart(2, '0'); + return `${padString(now.getHours())}:${padString(now.getMinutes())}:${padString(now.getSeconds())}`; + }, + ONE_WEEK_AGO: (): Date => { const today = new Date(); const oneWeekAgo = today.getDate() - 7;