mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-16 21:37:59 +00:00
49 lines
1.8 KiB
TypeScript
49 lines
1.8 KiB
TypeScript
import { logger } from "@app/lib/logger";
|
|
import { QueueJobs, QueueName, TQueueServiceFactory } from "@app/queue";
|
|
import { TPkiAlertServiceFactory } from "@app/services/pki-alert/pki-alert-service";
|
|
|
|
type TDailyExpiringPkiItemAlertQueueServiceFactoryDep = {
|
|
queueService: TQueueServiceFactory;
|
|
pkiAlertService: Pick<TPkiAlertServiceFactory, "sendPkiItemExpiryNotices">;
|
|
};
|
|
|
|
export type TDailyExpiringPkiItemAlertQueueServiceFactory = ReturnType<
|
|
typeof dailyExpiringPkiItemAlertQueueServiceFactory
|
|
>;
|
|
|
|
export const dailyExpiringPkiItemAlertQueueServiceFactory = ({
|
|
queueService,
|
|
pkiAlertService
|
|
}: TDailyExpiringPkiItemAlertQueueServiceFactoryDep) => {
|
|
queueService.start(QueueName.DailyExpiringPkiItemAlert, async () => {
|
|
logger.info(`${QueueName.DailyExpiringPkiItemAlert}: queue task started`);
|
|
await pkiAlertService.sendPkiItemExpiryNotices();
|
|
logger.info(`${QueueName.DailyExpiringPkiItemAlert}: queue task completed`);
|
|
});
|
|
|
|
// we do a repeat cron job in utc timezone at 12 Midnight each day
|
|
const startSendingAlerts = async () => {
|
|
// clear previous job
|
|
await queueService.stopRepeatableJob(
|
|
QueueName.DailyExpiringPkiItemAlert,
|
|
QueueJobs.DailyExpiringPkiItemAlert,
|
|
{ pattern: "0 0 * * *", utc: true },
|
|
QueueName.DailyExpiringPkiItemAlert // just a job id
|
|
);
|
|
|
|
await queueService.queue(QueueName.DailyExpiringPkiItemAlert, QueueJobs.DailyExpiringPkiItemAlert, undefined, {
|
|
delay: 5000,
|
|
jobId: QueueName.DailyExpiringPkiItemAlert,
|
|
repeat: { pattern: "0 0 * * *", utc: true }
|
|
});
|
|
};
|
|
|
|
queueService.listen(QueueName.DailyExpiringPkiItemAlert, "failed", (_, err) => {
|
|
logger.error(err, `${QueueName.DailyExpiringPkiItemAlert}: Expiring PKI item alert failed`);
|
|
});
|
|
|
|
return {
|
|
startSendingAlerts
|
|
};
|
|
};
|