add crone to delete old pagers

This commit is contained in:
2026-03-09 16:59:12 +03:30
parent d1dfcdba99
commit 4e8bec4bc6
2 changed files with 48 additions and 1 deletions
+46
View File
@@ -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);
}
}
}
+2 -1
View File
@@ -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 {}