48 lines
1.3 KiB
TypeScript
48 lines
1.3 KiB
TypeScript
"use server";
|
|
|
|
import { prisma, Prisma, Event, Participant } from "@repo/db";
|
|
|
|
export const upsertEvent = async (event: Prisma.EventCreateInput, id?: Event["id"]) => {
|
|
const newEvent = id
|
|
? await prisma.event.update({
|
|
where: { id: id },
|
|
data: event,
|
|
})
|
|
: await prisma.event.create({ data: event });
|
|
return newEvent;
|
|
};
|
|
|
|
export const deleteEvent = async (id: Event["id"]) => {
|
|
await prisma.event.delete({ where: { id: id } });
|
|
};
|
|
|
|
export const upsertAppointment = async (
|
|
eventAppointment: Prisma.XOR<
|
|
Prisma.EventAppointmentCreateInput,
|
|
Prisma.EventAppointmentUncheckedCreateInput
|
|
>,
|
|
) => {
|
|
const newEventAppointment = eventAppointment.id
|
|
? await prisma.eventAppointment.update({
|
|
where: { id: eventAppointment.id },
|
|
data: eventAppointment,
|
|
})
|
|
: await prisma.eventAppointment.create({ data: eventAppointment });
|
|
return newEventAppointment;
|
|
};
|
|
|
|
export const deleteAppoinement = async (id: Event["id"]) => {
|
|
await prisma.eventAppointment.delete({ where: { id: id } });
|
|
prisma.eventAppointment.findMany({
|
|
where: {
|
|
eventId: id,
|
|
},
|
|
orderBy: {
|
|
// TODO: add order by in relation to table selected column
|
|
},
|
|
});
|
|
};
|
|
export const deleteParticipant = async (id: Participant["id"]) => {
|
|
await prisma.participant.delete({ where: { id: id } });
|
|
};
|