Files
jeanGaston 6ea31e8ac0 feat: allow a single activity proposition and add optional location field
Senders no longer need to fill in two activities to publish; one is
now enough (still capped at 5). Each activity can also specify a
place, which flows into the generated Google Calendar link and .ics
file when the recipient picks a slot.
2026-07-29 20:45:24 +02:00

66 lines
2.1 KiB
Plaintext

generator client {
provider = "prisma-client-js"
binaryTargets = ["native", "linux-musl-openssl-3.0.x"]
}
datasource db {
provider = "sqlite"
url = env("DATABASE_URL")
}
model Proposal {
id String @id @default(cuid())
slug String @unique
manageToken String @unique
senderName String
recipientName String
title String
message String
theme String @default("sunset")
gradientFrom String?
gradientVia String?
gradientTo String?
gifUrl String?
evasiveNo Boolean @default(false)
status String @default("draft")
expiresAt DateTime?
createdAt DateTime @default(now())
activities ActivityOption[]
response Response?
}
model ActivityOption {
id String @id @default(cuid())
proposalId String
proposal Proposal @relation(fields: [proposalId], references: [id], onDelete: Cascade)
title String
description String?
location String?
emoji String @default("🎉")
order Int @default(0)
slots TimeSlot[]
responses Response[] @relation("SelectedActivity")
}
model TimeSlot {
id String @id @default(cuid())
activityOptionId String
activity ActivityOption @relation(fields: [activityOptionId], references: [id], onDelete: Cascade)
label String
startsAt String?
responses Response[] @relation("SelectedSlot")
}
model Response {
id String @id @default(cuid())
proposalId String @unique
proposal Proposal @relation(fields: [proposalId], references: [id], onDelete: Cascade)
selectedActivityId String?
selectedActivity ActivityOption? @relation("SelectedActivity", fields: [selectedActivityId], references: [id])
selectedTimeSlotId String?
selectedTimeSlot TimeSlot? @relation("SelectedSlot", fields: [selectedTimeSlotId], references: [id])
answer String
note String?
respondedAt DateTime @default(now())
}