36 lines
1.2 KiB
TypeScript
36 lines
1.2 KiB
TypeScript
import { Worker } from 'bullmq';
|
|
import { redisConfig } from './config.js';
|
|
import { OffboardingLwdReminderService } from '../../services/OffboardingLwdReminderService.js';
|
|
|
|
export const offboardingLwdWorker = new Worker(
|
|
'offboardingLwdQueue',
|
|
async (job) => {
|
|
console.log(`[Offboarding LWD Worker] Processing job ${job.id} (${job.name})`);
|
|
|
|
if (job.name === 'checkLwdFnfReminders') {
|
|
await OffboardingLwdReminderService.processAllPendingReminders();
|
|
return;
|
|
}
|
|
|
|
if (job.name === 'sendLwdFnfReminder') {
|
|
const payload = job.data as { requestType: 'resignation' | 'termination'; requestId: string };
|
|
await OffboardingLwdReminderService.processOne(payload);
|
|
return;
|
|
}
|
|
|
|
console.warn(`[Offboarding LWD Worker] Unknown job name: ${job.name}`);
|
|
},
|
|
{
|
|
connection: redisConfig,
|
|
concurrency: 2
|
|
}
|
|
);
|
|
|
|
offboardingLwdWorker.on('completed', (job) => {
|
|
console.log(`[Offboarding LWD Worker] Job ${job.id} completed`);
|
|
});
|
|
|
|
offboardingLwdWorker.on('failed', (job, err) => {
|
|
console.error(`[Offboarding LWD Worker] Job ${job?.id} failed: ${err.message}`);
|
|
});
|