generator client { provider = "prisma-client-js" } datasource db { provider = "postgresql" url = env("DATABASE_URL") } model User { id String @id @default(cuid()) email String @unique password String? // hashed password name String? username String @unique role Role @default(GUEST) events Event[] @relation("EventCreator") createdAt DateTime @default(now()) } enum Role { COUPLE PLANNER GUEST } model Event { id String @id @default(cuid()) name String date DateTime? location String? creator User @relation("EventCreator", fields: [creatorId], references: [id]) creatorId String guests Guest[] eventGuests EventGuest[] notes String? todos EventTodo[] createdAt DateTime @default(now()) } model Guest { id String @id @default(cuid()) event Event @relation(fields: [eventId], references: [id]) eventId String name String email String? rsvp RsvpStatus @default(PENDING) } enum RsvpStatus { YES NO PENDING } model InviteToken { id String @id @default(cuid()) email String @unique role Role token String @unique eventId String? expiresAt DateTime accepted Boolean @default(false) createdAt DateTime @default(now()) } model GuestBookEntry { id String @id @default(cuid()) fName String lName String email String? phone String? address String? notes String? side String // e.g., "Brian", "Janice", etc. eventGuests EventGuest[] createdAt DateTime @default(now()) } model EventGuest { id String @id @default(cuid()) event Event @relation(fields: [eventId], references: [id]) eventId String guestBookEntry GuestBookEntry @relation(fields: [guestBookEntryId], references: [id]) guestBookEntryId String rsvp RsvpStatus @default(PENDING) createdAt DateTime @default(now()) @@unique([eventId, guestBookEntryId]) } model EventTodo { id String @id @default(cuid()) name String complete Boolean @default(false) dueDate DateTime? notes String? event Event @relation(fields: [eventId], references: [id]) eventId String createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // Optional for future extensibility // category String? // assignedTo String? // could link to User in future }