bdfa4639e3d0a73df53bf9a49c1e2e72499b57ab
import { Job } from 'bullmq';
import {
MailJobName, MailJobData,
WelcomeEmailPayload,
PasswordResetPayload,
} from '@app/lib/queue/types';
sendWelcomeEmail,
sendResetPasswordEmail
} from '@app/services/mail'
export async function mailProcessor(job: Job<MailJobData['data']>): Promise<void> {
// job.name is the discriminant
switch (job.name as MailJobName) {
case MailJobName.WelcomeEmail: {
const data = job.data as WelcomeEmailPayload;
console.log("Dispatching an welcome email", data);
sendWelcomeEmail(Number(data.userId));
break;
}
case MailJobName.PasswordReset: {
const data = job.data as PasswordResetPayload;
await sendResetPasswordEmail(data.userId, data.token);
default:
throw new Error(`Unknown mail job: ${job.name}`);