eletrotupi / tcc/ api/src/lib/queue/processors/medicineReminders.ts2b1f0479416f5033b2f7f43bd11b6ad759f5ec98
1.1 KB | 34 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

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

10
  console.log(`[medicine-reminder] job ${job.id}: user=${userId} regimen=${regimenId} medicine=${medicineName}`);
11

12
  const user = await prisma.user.findUnique({
13
    where: { id: userId },
14
    select: { pushToken: true },
15
  });
16

17
  if (!user) {
18
    console.warn(`[medicine-reminder] user ${userId} not found, skipping`);
19
    return;
20
  }
21
  if (!user.pushToken) {
22
    console.warn(`[medicine-reminder] user ${userId} has no pushToken, skipping`);
23
    return;
24
  }
25

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

33
  console.log(`[medicine-reminder] sent OK to user ${userId}`);
34
}