eletrotupi / tcc/ api/src/lib/queue/processors/mail.tsffd33a29c8ba15703f785399b5d0352f50c16d73
868 B | 35 lines Raw
1
import { Job } from 'bullmq';
2
import {
3
  MailJobName, MailJobData,
4
  WelcomeEmailPayload,
5
  PasswordResetPayload,
6
} from '@app/lib/queue/types';
7

8
import {
9
  sendWelcomeEmail
10
} from '@app/services/mail'
11

12
export async function mailProcessor(job: Job<MailJobData['data']>): Promise<void> {
13
  // job.name is the discriminant
14
  switch (job.name as MailJobName) {
15
    case MailJobName.WelcomeEmail: {
16
      const data = job.data as WelcomeEmailPayload;
17
      // await sendWelcomeEmail(data.userId);
18

19
      console.log("Dispatching an welcome email", data);
20

21
      sendWelcomeEmail(Number(data.userId));
22

23
      break;
24
    }
25

26
    case MailJobName.PasswordReset: {
27
      const data = job.data as PasswordResetPayload;
28
      // await sendPasswordResetEmail(data.userId, data.token);
29
      break;
30
    }
31

32
    default:
33
      throw new Error(`Unknown mail job: ${job.name}`);
34
  }
35
}