Files
var-monorepo/apps/hub/app/(app)/admin/event/action.ts
2025-02-22 17:46:28 +01:00

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 } });
};