1+ // Production Prisma Schema - MySQL Version
2+ // Copy this content to replace prisma/schema.prisma for production deployment
3+
4+ generator client {
5+ provider = " prisma-client-js "
6+ }
7+
8+ datasource db {
9+ provider = " mysql "
10+ url = env (" DATABASE_URL " )
11+ }
12+
13+ model Account {
14+ id String @id @default (cuid () )
15+ userId String
16+ type String
17+ provider String
18+ providerAccountId String
19+ refresh_token String ? @db.Text
20+ access_token String ? @db.Text
21+ expires_at Int ?
22+ token_type String ?
23+ scope String ?
24+ id_token String ? @db.Text
25+ session_state String ?
26+
27+ user User @relation (fields : [userId ] , references : [id ] , onDelete : Cascade )
28+
29+ @@unique ([provider , providerAccountId ] )
30+ }
31+
32+ model Session {
33+ id String @id @default (cuid () )
34+ sessionToken String @unique
35+ userId String
36+ expires DateTime
37+ user User @relation (fields : [userId ] , references : [id ] , onDelete : Cascade )
38+ }
39+
40+ model User {
41+ id String @id @default (cuid () )
42+ name String ?
43+ email String @unique
44+ emailVerified DateTime ?
45+ image String ?
46+ role Role @default (ADMIN )
47+ accounts Account []
48+ sessions Session []
49+ createdAt DateTime @default (now () )
50+ updatedAt DateTime @updatedAt
51+ }
52+
53+ model VerificationToken {
54+ identifier String
55+ token String @unique
56+ expires DateTime
57+
58+ @@unique ([identifier , token ] )
59+ }
60+
61+ model Guest {
62+ id String @id @default (cuid () )
63+ name String
64+ email String @unique
65+ token String @unique
66+ country String ?
67+ phone String ?
68+ rsvps RSVP []
69+ createdAt DateTime @default (now () )
70+ updatedAt DateTime @updatedAt
71+ }
72+
73+ model Venue {
74+ id String @id @default (cuid () )
75+ name String
76+ address String
77+ city String
78+ country String
79+ latitude Float ?
80+ longitude Float ?
81+ googleMapUrl String ? @db.Text
82+ description String ? @db.Text
83+ events Event []
84+ createdAt DateTime @default (now () )
85+ updatedAt DateTime @updatedAt
86+ }
87+
88+ model Event {
89+ id String @id @default (cuid () )
90+ title String
91+ description String @db.Text
92+ date DateTime
93+ time String
94+ venue Venue @relation (fields : [venueId ] , references : [id ] )
95+ venueId String
96+ rsvps RSVP []
97+ streams Stream []
98+ order Int @default (0 )
99+ active Boolean @default (true )
100+ createdAt DateTime @default (now () )
101+ updatedAt DateTime @updatedAt
102+ }
103+
104+ model RSVP {
105+ id String @id @default (cuid () )
106+ guest Guest @relation (fields : [guestId ] , references : [id ] )
107+ guestId String
108+ event Event @relation (fields : [eventId ] , references : [id ] )
109+ eventId String
110+ response RSVPResponse
111+ attendees Int @default (1 )
112+ dietaryPreferences String ? @db.Text
113+ comments String ? @db.Text
114+ createdAt DateTime @default (now () )
115+ updatedAt DateTime @updatedAt
116+
117+ @@unique ([guestId , eventId ] )
118+ }
119+
120+ model Hotel {
121+ id String @id @default (cuid () )
122+ name String
123+ address String
124+ city String
125+ country String
126+ phone String ?
127+ email String ?
128+ website String ?
129+ description String ? @db.Text
130+ amenities String ? @db.Text
131+ bookingCode String ?
132+ discount String ?
133+ deadline DateTime ?
134+ createdAt DateTime @default (now () )
135+ updatedAt DateTime @updatedAt
136+ }
137+
138+ model MediaItem {
139+ id String @id @default (cuid () )
140+ title String ?
141+ description String ? @db.Text
142+ type MediaType
143+ url String
144+ publicId String ? // Cloudinary public ID
145+ category String
146+ album String ?
147+ caption String ? @db.Text
148+ public Boolean @default (true )
149+ approved Boolean @default (false )
150+ featured Boolean @default (false )
151+ order Int @default (0 )
152+ uploadedBy String ? // User ID or guest email
153+ createdAt DateTime @default (now () )
154+ updatedAt DateTime @updatedAt
155+ }
156+
157+ model Stream {
158+ id String @id @default (cuid () )
159+ title String
160+ description String ? @db.Text
161+ streamUrl String
162+ isLive Boolean @default (false )
163+ eventId String ?
164+ event Event ? @relation (fields : [eventId ] , references : [id ] )
165+ startTime DateTime ?
166+ endTime DateTime ?
167+ createdAt DateTime @default (now () )
168+ updatedAt DateTime @updatedAt
169+ }
170+
171+ model ContactRequest {
172+ id String @id @default (cuid () )
173+ name String
174+ email String
175+ phone String ?
176+ subject ContactSubject
177+ message String @db.Text
178+ status RequestStatus @default (PENDING )
179+ adminNote String ? @db.Text
180+ createdAt DateTime @default (now () )
181+ updatedAt DateTime @updatedAt
182+ }
183+
184+ model RSVPFormSubmission {
185+ id String @id @default (cuid () )
186+ guestName String ?
187+ email String
188+ willAttendDhaka String // 'yes' | 'no' | 'maybe'
189+ familySide String // 'bride' | 'groom' | 'both'
190+ guestCount String // '1' | '2' | '3' | '4' | 'other'
191+ guestCountOther String ?
192+ additionalInfo String ? @db.Text
193+
194+ // Contact Information
195+ preferredNumber String ?
196+ preferredWhatsapp Boolean @default (false )
197+ preferredBotim Boolean @default (false )
198+ secondaryNumber String ?
199+ secondaryWhatsapp Boolean @default (false )
200+ secondaryBotim Boolean @default (false )
201+
202+ // Emergency Contact
203+ emergencyName String ?
204+ emergencyPhone String ?
205+ emergencyEmail String ?
206+
207+ status RequestStatus @default (PENDING )
208+ adminNote String ? @db.Text
209+ createdAt DateTime @default (now () )
210+ updatedAt DateTime @updatedAt
211+ }
212+
213+ // Enums
214+ enum Role {
215+ ADMIN
216+ MODERATOR
217+ }
218+
219+ enum RSVPResponse {
220+ ATTENDING
221+ NOT_ATTENDING
222+ MAYBE
223+ }
224+
225+ enum MediaType {
226+ IMAGE
227+ VIDEO
228+ }
229+
230+ enum StreamPlatform {
231+ YOUTUBE
232+ FACEBOOK
233+ VIMEO
234+ CUSTOM
235+ }
236+
237+ enum ContactSubject {
238+ RSVP
239+ TRAVEL
240+ EVENTS
241+ DIETARY
242+ ACCESSIBILITY
243+ GENERAL
244+ EMERGENCY
245+ }
246+
247+ enum RequestStatus {
248+ PENDING
249+ RESPONDED
250+ CLOSED
251+ }
0 commit comments