eletrotupi / tcc/ api/src/lib/queue/processors/medicineReminders.ts22ce11e7f70ff2faf4796eef6498cd1ec65bbd31
1.1 KB | 38 lines Raw
1
import { Job } from "bullmq";
2
import { prisma } from "@app/lib/prisma";
3
import { sendPushNotification } from "@app/lib/sendPushNotification";
4
import { MedicineReminderPayload } from "@app/lib/queue/types";
5
import { logger } from "@app/lib/logger";
6

7
export async function medicineReminderProcessor(job: Job): Promise<void> {
8
  const { userId, regimenId, medicineName, dosage } =
9
    job.data as MedicineReminderPayload;
10

11
  logger.info(
12
    { jobId: job.id, userId, regimenId, medicine: medicineName },
13
    "[medicine-reminder] job started",
14
  );
15

16
  const user = await prisma.user.findUnique({
17
    where: { id: userId },
18
    select: { pushToken: true },
19
  });
20

21
  if (!user) {
22
    logger.warn({ userId }, "[medicine-reminder] user not found, skipping");
23
    return;
24
  }
25
  if (!user.pushToken) {
26
    logger.warn({ userId }, "[medicine-reminder] no pushToken, skipping");
27
    return;
28
  }
29

30
  await sendPushNotification({
31
    token: user.pushToken,
32
    title: `Hora de tomar ${medicineName}`,
33
    body: dosage,
34
    data: { screen: "medicine-regimens", regimenId },
35
  });
36

37
  logger.info({ userId }, "[medicine-reminder] push sent");
38
}