eletrotupi / tcc/ api/src/lib/queue/processors/mail.ts2b711effe0b3cebf9cf475ee82a223c1623df80f
903 B | 37 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
  sendResetPasswordEmail
11
} from '@app/services/mail'
12

13
export async function mailProcessor(job: Job<MailJobData['data']>): Promise<void> {
14
  // job.name is the discriminant
15
  switch (job.name as MailJobName) {
16
    case MailJobName.WelcomeEmail: {
17
      const data = job.data as WelcomeEmailPayload;
18
      console.log("Dispatching an welcome email", data);
19

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

22
      break;
23
    }
24

25
    case MailJobName.PasswordReset: {
26
      const data = job.data as PasswordResetPayload;
27
      console.log("Dispatching an welcome email", data);
28

29
      await sendResetPasswordEmail(data.userId, data.token);
30

31
      break;
32
    }
33

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