Files
wedding-planner/lib/mutations.ts
2025-06-25 13:18:16 -04:00

87 lines
2.0 KiB
TypeScript

import { prisma } from './prisma';
import bcrypt from 'bcrypt'
export const mutations = {
async createEvent(data: {
name: string;
date?: string;
location?: string;
creatorId: string;
}) {
const event = await prisma.event.create({
data: {
name: data.name,
date: data.date ? new Date(data.date) : undefined,
location: data.location,
creatorId: data.creatorId,
},
});
return event;
},
async addGuest(data: {
eventId: string;
name: string;
email?: string;
}) {
return await prisma.guest.create({
data: {
eventId: data.eventId,
name: data.name,
email: data.email,
},
});
},
async createUser({
username,
email,
password,
role,
}: {
username: string
email?: string
password: string
role: 'COUPLE' | 'PLANNER' | 'GUEST'
}) {
const hashedPassword = await bcrypt.hash(password, 10)
const user = await prisma.user.create({
data: {
username,
email: email || '',
password: hashedPassword,
role,
},
})
return user
},
async updateEvent(
eventId: string,
data: Partial<{ name: string; date: string; location: string }>
) {
const { date, ...rest } = data;
let parsedDate: Date | undefined = undefined;
if (date) {
// Parse full datetime-local string into Date object
parsedDate = new Date(date); // Automatically handled as local time
}
const event = await prisma.event.update({
where: { id: eventId },
data: {
...rest,
...(parsedDate ? { date: parsedDate } : {}),
},
});
return event;
}
};