66 lines
1.7 KiB
TypeScript
66 lines
1.7 KiB
TypeScript
'use server';
|
|
|
|
import { prisma, Prisma, Event, Participant, EventAppointment } 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
|
|
>,
|
|
id?: EventAppointment['id']
|
|
) => {
|
|
const newEventAppointment = id
|
|
? await prisma.eventAppointment.update({
|
|
where: { id: 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 upsertParticipant = async (
|
|
participant: Prisma.ParticipantCreateInput,
|
|
id?: Participant['id']
|
|
) => {
|
|
const newParticipant = id
|
|
? await prisma.participant.update({
|
|
where: { id: id },
|
|
data: participant,
|
|
})
|
|
: await prisma.participant.create({ data: participant });
|
|
return newParticipant;
|
|
};
|
|
|
|
export const deleteParticipant = async (id: Participant['id']) => {
|
|
await prisma.participant.delete({ where: { id: id } });
|
|
};
|