eletrotupi / tcc/ api/src/services/medicineRegimen.service.ts6c0f1d02fc725cde9d020ca4c6f2675f6c3698f4
1.4 KB | 49 lines Raw
1
import { prisma } from '@app/lib/prisma';
2
import { MedicineRegimen } from '@prisma/client';
3
import { CreateMedicineRegimenInput, UpdateMedicineRegimenInput } from '@app/schemas';
4
import { syncMedicineReminderJobs } from '@app/services/medicineReminder.sync';
5

6
export const getMedicineRegimensByUserId = async (
7
  userId: number,
8
): Promise<MedicineRegimen[]> => {
9
  return prisma.medicineRegimen.findMany({
10
    where: { userId, active: true },
11
    orderBy: { createdAt: 'desc' },
12
  });
13
};
14

15
export const createMedicineRegimen = async (
16
  userId: number,
17
  input: CreateMedicineRegimenInput,
18
): Promise<MedicineRegimen> => {
19
  const regimen = await prisma.medicineRegimen.create({
20
    data: { ...input, userId },
21
  });
22
  await syncMedicineReminderJobs(regimen);
23
  return regimen;
24
};
25

26
export const updateMedicineRegimen = async (
27
  userId: number,
28
  id: number,
29
  input: UpdateMedicineRegimenInput,
30
): Promise<MedicineRegimen> => {
31
  const regimen = await prisma.medicineRegimen.update({
32
    where: { id, userId },
33
    data: input,
34
  });
35
  await syncMedicineReminderJobs(regimen);
36
  return regimen;
37
};
38

39
export const deactivateMedicineRegimen = async (
40
  userId: number,
41
  id: number,
42
): Promise<MedicineRegimen> => {
43
  const regimen = await prisma.medicineRegimen.update({
44
    where: { id, userId },
45
    data: { active: false },
46
  });
47
  await syncMedicineReminderJobs(regimen);
48
  return regimen;
49
};