import { Injectable, Logger } from '@nestjs/common'; import { Cron, CronExpression } from '@nestjs/schedule'; import { BackupService } from './backup.service'; @Injectable() export class BackupScheduler { private readonly logger = new Logger(BackupScheduler.name); constructor(private readonly backup: BackupService) {} @Cron(process.env.BACKUP_CRON || CronExpression.EVERY_DAY_AT_2AM, { name: 'backup_job' }) async handleCron() { if (String(process.env.BACKUP_ENABLED || 'true').toLowerCase() === 'false') { return; } this.logger.log('Scheduled backup triggered'); try { await this.backup.runBackup(); this.logger.log('Backup completed'); } catch (err: any) { this.logger.error('Backup failed', err?.message || err); } } }