training_data/apps/server/src/tasks/tasks.service.ts

47 lines
1.8 KiB
TypeScript
Executable File

import { Injectable, Logger, OnModuleInit } from '@nestjs/common';
import { SchedulerRegistry } from '@nestjs/schedule';
import { InitService } from '@server/tasks/init/init.service';
import { ReminderService } from '@server/tasks/reminder/reminder.service';
import { CronJob } from 'cron';
@Injectable()
export class TasksService implements OnModuleInit {
private readonly logger = new Logger(TasksService.name);
constructor(
private readonly schedulerRegistry: SchedulerRegistry,
private readonly initService: InitService,
private readonly reminderService: ReminderService
) { }
async onModuleInit() {
this.logger.log('Main node launch');
await this.initService.init();
this.logger.log('Initialization successful');
try {
const cronExpression = process.env.DEADLINE_CRON;
if (!cronExpression) {
throw new Error('DEADLINE_CRON environment variable is not set');
}
const handleRemindJob = new CronJob(cronExpression, async () => {
try {
await this.reminderService.remindDeadline();
this.logger.log('Reminder successfully processed');
} catch (reminderErr) {
this.logger.error('Error occurred while processing reminder', reminderErr);
}
});
this.schedulerRegistry.addCronJob('remindDeadline', handleRemindJob as any);
this.logger.log('Start remind cron job');
handleRemindJob.start();
} catch (cronJobErr) {
this.logger.error('Failed to initialize cron job', cronJobErr);
// Optionally rethrow the error if you want to halt further execution
// throw cronJobErr;
}
}
}