25 lines
785 B
TypeScript
25 lines
785 B
TypeScript
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);
|
|
}
|
|
}
|
|
}
|