From 4e8bec4bc695470aed10719e53040a675fd20897 Mon Sep 17 00:00:00 2001 From: morteza-mortezai Date: Mon, 9 Mar 2026 16:59:12 +0330 Subject: [PATCH] add crone to delete old pagers --- src/modules/pager/crone/pager.crone.ts | 46 ++++++++++++++++++++++++++ src/modules/pager/pager.module.ts | 3 +- 2 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 src/modules/pager/crone/pager.crone.ts diff --git a/src/modules/pager/crone/pager.crone.ts b/src/modules/pager/crone/pager.crone.ts new file mode 100644 index 0000000..a6c4f5f --- /dev/null +++ b/src/modules/pager/crone/pager.crone.ts @@ -0,0 +1,46 @@ +import { Injectable, Logger } from '@nestjs/common'; +import { Cron } from '@nestjs/schedule'; +import { EntityManager } from '@mikro-orm/postgresql'; +import { Pager } from '../entities/pager.entity'; + +@Injectable() +export class PagerCrone { + private readonly logger = new Logger(PagerCrone.name); + + constructor(private readonly em: EntityManager) {} + + // run every day at 03:00 (3:00 AM) + @Cron('0 3 * * *', { + name: 'deleteOldPagers', + timeZone: 'UTC', + }) + async handleCron() { + try { + this.logger.debug('Starting daily pager cleanup (removing pagers older than 24 hours)'); + + // Calculate the date 24 hours ago + const twentyFourHoursAgo = new Date(); + twentyFourHoursAgo.setHours(twentyFourHoursAgo.getHours() - 24); + + // Find all notifications created more than 24 hours ago + const oldPagers = await this.em.find(Pager, { + createdAt: { $lt: twentyFourHoursAgo }, + }); + + if (!oldPagers || oldPagers.length === 0) { + this.logger.debug('No old pagers found to delete'); + return; + } + + this.logger.log(`Found ${oldPagers.length} pagers older than 24 hours to delete`); + + // Delete the old notifications + await this.em.removeAndFlush(oldPagers); + + this.logger.log(`Successfully deleted ${oldPagers.length} old pagers`); + } catch (err) { + this.logger.error(`pagers failed: ${err?.message}`, err); + } + } +} + diff --git a/src/modules/pager/pager.module.ts b/src/modules/pager/pager.module.ts index 486fadf..87392ef 100644 --- a/src/modules/pager/pager.module.ts +++ b/src/modules/pager/pager.module.ts @@ -8,10 +8,11 @@ import { RolesModule } from '../roles/roles.module'; import { PagerListeners } from './listeners/notification.listeners'; import { AdminModule } from '../admin/admin.module'; import { NotificationsModule } from '../notifications/notifications.module'; +import { PagerCrone } from './crone/pager.crone'; @Module({ imports: [MikroOrmModule.forFeature([Pager]), JwtModule, RolesModule, AdminModule, NotificationsModule], controllers: [PagerController], - providers: [PagerService, PagerListeners], + providers: [PagerService, PagerListeners,PagerCrone], }) export class PagerModule {}