@optimatech88/titomeet-shared-lib 1.0.34 → 1.0.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,329 +1,369 @@
1
- generator client {
2
- provider = "prisma-client-js"
3
- }
4
-
5
- datasource db {
6
- provider = "postgresql"
7
- url = env("DATABASE_URL")
8
- }
9
-
10
- model User {
11
- id String @id @default(cuid())
12
- username String @unique
13
- email String @unique
14
- firstName String
15
- lastName String
16
- password String?
17
- role UserRole @default(USER)
18
- profilePicture String?
19
- createdAt DateTime @default(now())
20
- updatedAt DateTime @updatedAt
21
- emailVerified Boolean @default(false)
22
- status UserStatus @default(ACTIVE)
23
- accounts Account[]
24
- chatUsers ChatUser[]
25
- events Event[]
26
- favorites Favorite[]
27
- messages Message[]
28
- notificationsReceived Notification[] @relation("NotificationRecipient")
29
- notificationsSent Notification[] @relation("NotificationSender")
30
- orders Order[]
31
- providers Provider[]
32
- reviews Review[]
33
-
34
- userInterests UserInterests?
35
- }
36
-
37
- model Account {
38
- id String @id @default(cuid())
39
- refreshToken String @unique
40
- expiresAt DateTime
41
- userId String
42
- user User @relation(fields: [userId], references: [id])
43
- }
44
-
45
- model Address {
46
- id String @id @default(uuid())
47
- name String
48
- line2 String?
49
- city String?
50
- state String?
51
- country String
52
- postalCode String?
53
- createdAt DateTime @default(now())
54
- updatedAt DateTime @updatedAt
55
- countryCode String?
56
- latitude Float?
57
- longitude Float?
58
- type String @default("suburb")
59
- events Event[]
60
- Provider Provider[]
61
- }
62
-
63
- model EventCategory {
64
- id String @id @default(cuid())
65
- name String @unique
66
- description String?
67
- createdAt DateTime @default(now())
68
- updatedAt DateTime @updatedAt
69
- active Boolean @default(true)
70
- events Event[] @relation("EventToEventCategory")
71
- userInterests UserInterests[]
72
-
73
- parentId String?
74
- parent EventCategory? @relation("EventCategoryParent", fields: [parentId], references: [id])
75
-
76
-
77
- children EventCategory[] @relation("EventCategoryParent")
78
- }
79
-
80
- model Event {
81
- id String @id @default(cuid())
82
- name String
83
- description String
84
- startDate DateTime
85
- endDate DateTime
86
- startTime String
87
- endTime String
88
- capacity Int
89
- coverPicture String
90
- badge String
91
- tags String[]
92
- accessType EventAccess @default(FREE)
93
- visibility EventVisibility @default(PUBLIC)
94
- status EventStatus @default(DRAFT)
95
- addressId String
96
- postedById String
97
- createdAt DateTime @default(now())
98
- updatedAt DateTime @updatedAt
99
- chat Chat?
100
- address Address @relation(fields: [addressId], references: [id])
101
- postedBy User @relation(fields: [postedById], references: [id])
102
- prices EventPrice[]
103
- favorites Favorite[]
104
- orders Order[]
105
- categories EventCategory[] @relation("EventToEventCategory")
106
- providers Provider[] @relation("EventToProvider")
107
- }
108
-
109
- model EventPrice {
110
- id String @id @default(uuid())
111
- name String
112
- amount Float
113
- description String?
114
- eventId String
115
- createdAt DateTime @default(now())
116
- updatedAt DateTime @updatedAt
117
- event Event @relation(fields: [eventId], references: [id])
118
- orderItems OrderItem[]
119
- }
120
-
121
- model Chat {
122
- id String @id @default(cuid())
123
- name String
124
- eventId String @unique
125
- createdAt DateTime @default(now())
126
- updatedAt DateTime @updatedAt
127
- event Event @relation(fields: [eventId], references: [id])
128
- users ChatUser[]
129
- messages Message[]
130
- }
131
-
132
- model ChatUser {
133
- id String @id @default(cuid())
134
- chatId String
135
- userId String
136
- createdAt DateTime @default(now())
137
- updatedAt DateTime @updatedAt
138
- chat Chat @relation(fields: [chatId], references: [id])
139
- user User @relation(fields: [userId], references: [id])
140
- }
141
-
142
- model Message {
143
- id String @id @default(cuid())
144
- chatId String
145
- senderId String
146
- createdAt DateTime @default(now())
147
- updatedAt DateTime @updatedAt
148
- files Json?
149
- text String
150
- chat Chat @relation(fields: [chatId], references: [id])
151
- sender User @relation(fields: [senderId], references: [id])
152
- }
153
-
154
- model Notification {
155
- id String @id @default(cuid())
156
- notifiedToId String
157
- userId String?
158
- type NotificationType
159
- read Boolean @default(false)
160
- data Json?
161
- createdAt DateTime @default(now())
162
- updatedAt DateTime @updatedAt
163
- notifiedTo User @relation("NotificationRecipient", fields: [notifiedToId], references: [id])
164
- user User? @relation("NotificationSender", fields: [userId], references: [id])
165
- }
166
-
167
- model ProviderCategory {
168
- id String @id @default(cuid())
169
- name String @unique
170
- description String?
171
- active Boolean @default(true)
172
- createdAt DateTime @default(now())
173
- updatedAt DateTime @updatedAt
174
- providers Provider[]
175
- }
176
-
177
- model Provider {
178
- id String @id @default(cuid())
179
- name String
180
- description String?
181
- image String?
182
- userId String
183
- status ProviderStatus @default(PENDING)
184
- createdAt DateTime @default(now())
185
- updatedAt DateTime @updatedAt
186
- addressId String?
187
- categoryId String
188
- docs Json?
189
- email String?
190
- phoneNumber String?
191
- pricingDetails String?
192
- rating Float?
193
- website String?
194
- address Address? @relation(fields: [addressId], references: [id])
195
- category ProviderCategory @relation(fields: [categoryId], references: [id])
196
- user User @relation(fields: [userId], references: [id])
197
- reviews Review[]
198
- events Event[] @relation("EventToProvider")
199
- }
200
-
201
- model Review {
202
- id String @id @default(cuid())
203
- rating Float
204
- comment String?
205
- providerId String
206
- userId String
207
- createdAt DateTime @default(now())
208
- updatedAt DateTime @updatedAt
209
- provider Provider @relation(fields: [providerId], references: [id])
210
- user User @relation(fields: [userId], references: [id])
211
- }
212
-
213
- model Favorite {
214
- id String @id @default(cuid())
215
- userId String
216
- eventId String
217
- createdAt DateTime @default(now())
218
- updatedAt DateTime @updatedAt
219
- event Event @relation(fields: [eventId], references: [id])
220
- user User @relation(fields: [userId], references: [id])
221
- }
222
-
223
- model Order {
224
- id String @id @default(cuid())
225
- userId String
226
- eventId String
227
- email String
228
- status OrderStatus @default(PENDING)
229
- totalAmount Float
230
- paymentIntentId String? @unique
231
- paymentStatus PaymentStatus @default(PENDING)
232
- createdAt DateTime @default(now())
233
- updatedAt DateTime @updatedAt
234
- event Event @relation(fields: [eventId], references: [id])
235
- user User @relation(fields: [userId], references: [id])
236
- items OrderItem[]
237
- }
238
-
239
- model OrderItem {
240
- id String @id @default(cuid())
241
- orderId String
242
- eventPriceId String
243
- quantity Int
244
- unitPrice Float
245
- createdAt DateTime @default(now())
246
- updatedAt DateTime @updatedAt
247
- eventPrice EventPrice @relation(fields: [eventPriceId], references: [id])
248
- order Order @relation(fields: [orderId], references: [id])
249
- }
250
-
251
-
252
- model UserInterests {
253
- id String @id @default(cuid())
254
-
255
- interests EventCategory[]
256
-
257
- userId String @unique
258
- user User @relation(fields: [userId], references: [id])
259
-
260
- createdAt DateTime @default(now())
261
- updatedAt DateTime @updatedAt
262
- }
263
-
264
- enum UserRole {
265
- SUPER_ADMIN
266
- ADMIN
267
- USER
268
- }
269
-
270
- enum UserStatus {
271
- ACTIVE
272
- INACTIVE
273
- DELETED
274
- }
275
-
276
- enum EventAccess {
277
- FREE
278
- PAID
279
- }
280
-
281
- enum EventVisibility {
282
- PUBLIC
283
- PRIVATE
284
- }
285
-
286
- enum EventStatus {
287
- DRAFT
288
- PUBLISHED
289
- PENDING
290
- CANCELLED
291
- }
292
-
293
- enum MediaType {
294
- image
295
- video
296
- audio
297
- pdf
298
- }
299
-
300
- enum NotificationType {
301
- NEW_MESSAGE
302
- EVENT_REMINDER
303
- EVENT_PARTICIPATION_CONFIRMATION
304
- EVENT_VALIDATION
305
- EVENT_REJECTION
306
- EVENT_ASSIGNMENT
307
- EVENT_ASSIGNMENT_APPROVAL
308
- EVENT_ASSIGNMENT_REJECTION
309
- }
310
-
311
- enum ProviderStatus {
312
- PENDING
313
- APPROVED
314
- REJECTED
315
- }
316
-
317
- enum OrderStatus {
318
- PENDING
319
- CONFIRMED
320
- CANCELLED
321
- REFUNDED
322
- }
323
-
324
- enum PaymentStatus {
325
- PENDING
326
- COMPLETED
327
- FAILED
328
- REFUNDED
329
- }
1
+ // This is your Prisma schema file,
2
+ // learn more about it in the docs: https://pris.ly/d/prisma-schema
3
+
4
+ // Looking for ways to speed up your queries, or scale easily with your serverless or edge functions?
5
+ // Try Prisma Accelerate: https://pris.ly/cli/accelerate-init
6
+
7
+ generator client {
8
+ provider = "prisma-client-js"
9
+ }
10
+
11
+ datasource db {
12
+ provider = "postgresql"
13
+ url = env("DATABASE_URL")
14
+ }
15
+
16
+ enum UserRole {
17
+ SUPER_ADMIN
18
+ ADMIN
19
+ USER
20
+ }
21
+
22
+ enum UserStatus {
23
+ ACTIVE
24
+ INACTIVE
25
+ DELETED
26
+ }
27
+
28
+ model User {
29
+ id String @id @default(cuid())
30
+ username String @unique
31
+ email String @unique
32
+ firstName String
33
+ lastName String
34
+ password String?
35
+ role UserRole @default(USER)
36
+
37
+ profilePicture String?
38
+ emailVerified Boolean @default(false)
39
+ status UserStatus @default(ACTIVE)
40
+
41
+ createdAt DateTime @default(now())
42
+ updatedAt DateTime @updatedAt
43
+
44
+ accounts Account[]
45
+ messages Message[]
46
+ events Event[]
47
+ notificationsReceived Notification[] @relation("NotificationRecipient")
48
+ notificationsSent Notification[] @relation("NotificationSender")
49
+ providers Provider[]
50
+ reviews Review[]
51
+
52
+ favorites Favorite[]
53
+ orders Order[]
54
+ chatUsers ChatUser[]
55
+ }
56
+
57
+ model Account {
58
+ id String @id @default(cuid())
59
+ refreshToken String @unique
60
+ expiresAt DateTime
61
+ user User @relation(fields: [userId], references: [id])
62
+ userId String
63
+ }
64
+
65
+ model Address {
66
+ id String @id @default(uuid())
67
+ name String
68
+ line2 String?
69
+ city String?
70
+ state String?
71
+ country String
72
+ countryCode String?
73
+ postalCode String?
74
+ type String @default("suburb")
75
+
76
+ latitude Float?
77
+ longitude Float?
78
+
79
+ events Event[]
80
+ createdAt DateTime @default(now())
81
+ updatedAt DateTime @updatedAt
82
+
83
+ Provider Provider[]
84
+ }
85
+
86
+ enum EventAccess {
87
+ FREE
88
+ PAID
89
+ }
90
+
91
+ enum EventVisibility {
92
+ PUBLIC
93
+ PRIVATE
94
+ }
95
+
96
+ model EventCategory {
97
+ id String @id @default(cuid())
98
+ name String @unique
99
+ description String?
100
+ events Event[]
101
+
102
+ active Boolean @default(true)
103
+
104
+ createdAt DateTime @default(now())
105
+ updatedAt DateTime @updatedAt
106
+ }
107
+
108
+ enum EventStatus {
109
+ DRAFT
110
+ PENDING
111
+ PUBLISHED
112
+ CANCELLED
113
+ }
114
+
115
+ model Event {
116
+ id String @id @default(cuid())
117
+ name String
118
+ description String
119
+ startDate DateTime
120
+ endDate DateTime
121
+ startTime String // Format: "HH:mm"
122
+ endTime String // Format: "HH:mm"
123
+
124
+ capacity Int
125
+ coverPicture String
126
+ badge String
127
+ tags String[] // Array of tags
128
+ accessType EventAccess @default(FREE)
129
+ visibility EventVisibility @default(PUBLIC)
130
+ prices EventPrice[] // Remove the previous price field
131
+ chat Chat? // Optional one-to-one relation
132
+ status EventStatus @default(DRAFT)
133
+
134
+ categories EventCategory[]
135
+
136
+ address Address @relation(fields: [addressId], references: [id])
137
+ addressId String
138
+
139
+ postedBy User @relation(fields: [postedById], references: [id])
140
+ postedById String
141
+
142
+ createdAt DateTime @default(now())
143
+ updatedAt DateTime @updatedAt
144
+
145
+ favorites Favorite[]
146
+
147
+ orders Order[]
148
+ providers ProviderOnEvent[]
149
+ }
150
+
151
+ model EventPrice {
152
+ id String @id @default(uuid())
153
+ name String // e.g., "Early Bird", "VIP", "Regular"
154
+ amount Float
155
+ description String?
156
+ event Event @relation(fields: [eventId], references: [id])
157
+ eventId String
158
+
159
+ // Add relation to OrderItem
160
+ orderItems OrderItem[]
161
+
162
+ createdAt DateTime @default(now())
163
+ updatedAt DateTime @updatedAt
164
+ }
165
+
166
+ model Chat {
167
+ id String @id @default(cuid())
168
+ name String
169
+ event Event @relation(fields: [eventId], references: [id])
170
+ eventId String @unique // One-to-one relation with Event
171
+ messages Message[]
172
+ users ChatUser[]
173
+
174
+ createdAt DateTime @default(now())
175
+ updatedAt DateTime @updatedAt
176
+ }
177
+
178
+ model ChatUser {
179
+ id String @id @default(cuid())
180
+ chat Chat @relation(fields: [chatId], references: [id])
181
+ chatId String
182
+ user User @relation(fields: [userId], references: [id])
183
+ userId String
184
+
185
+ createdAt DateTime @default(now())
186
+ updatedAt DateTime @updatedAt
187
+ }
188
+
189
+ enum MediaType {
190
+ image
191
+ video
192
+ audio
193
+ pdf
194
+ }
195
+
196
+ model Message {
197
+ id String @id @default(cuid())
198
+ text String
199
+ chat Chat @relation(fields: [chatId], references: [id])
200
+ chatId String
201
+ sender User @relation(fields: [senderId], references: [id])
202
+ senderId String
203
+
204
+ mediaUrl String?
205
+ mediaType MediaType?
206
+
207
+ createdAt DateTime @default(now())
208
+ updatedAt DateTime @updatedAt
209
+ }
210
+
211
+ enum NotificationType {
212
+ NEW_MESSAGE
213
+ EVENT_REMINDER
214
+ EVENT_PARTICIPATION_CONFIRMATION
215
+ }
216
+
217
+ model Notification {
218
+ id String @id @default(cuid())
219
+ notifiedTo User @relation("NotificationRecipient", fields: [notifiedToId], references: [id])
220
+ notifiedToId String
221
+ user User? @relation("NotificationSender", fields: [userId], references: [id])
222
+ userId String?
223
+ type NotificationType
224
+ read Boolean @default(false)
225
+ data Json?
226
+
227
+ createdAt DateTime @default(now())
228
+ updatedAt DateTime @updatedAt
229
+ }
230
+
231
+ model ProviderCategory {
232
+ id String @id @default(cuid())
233
+ name String @unique
234
+ description String?
235
+ providers Provider[]
236
+
237
+ active Boolean @default(true)
238
+
239
+ createdAt DateTime @default(now())
240
+ updatedAt DateTime @updatedAt
241
+ }
242
+
243
+ enum ProviderStatus {
244
+ PENDING
245
+ APPROVED
246
+ REJECTED
247
+ }
248
+
249
+ model Provider {
250
+ id String @id @default(cuid())
251
+ name String
252
+ email String?
253
+ description String?
254
+ image String?
255
+ phoneNumber String?
256
+ website String?
257
+ pricingDetails String?
258
+ docs Json?
259
+ rating Float?
260
+
261
+ address Address? @relation(fields: [addressId], references: [id])
262
+ addressId String?
263
+
264
+ category ProviderCategory @relation(fields: [categoryId], references: [id])
265
+ categoryId String
266
+
267
+ reviews Review[]
268
+
269
+ user User @relation(fields: [userId], references: [id])
270
+ userId String
271
+
272
+ status ProviderStatus @default(PENDING)
273
+
274
+ createdAt DateTime @default(now())
275
+ updatedAt DateTime @updatedAt
276
+ events ProviderOnEvent[]
277
+ }
278
+
279
+ enum ProviderOnEventStatus {
280
+ PENDING
281
+ APPROVED
282
+ REJECTED
283
+ }
284
+
285
+ model ProviderOnEvent {
286
+ id String @id @default(cuid())
287
+ provider Provider @relation(fields: [providerId], references: [id])
288
+ providerId String
289
+ event Event @relation(fields: [eventId], references: [id])
290
+ eventId String
291
+ status ProviderOnEventStatus @default(PENDING)
292
+ }
293
+
294
+ model Review {
295
+ id String @id @default(cuid())
296
+ rating Float
297
+ comment String?
298
+ provider Provider @relation(fields: [providerId], references: [id])
299
+ providerId String
300
+
301
+ user User @relation(fields: [userId], references: [id])
302
+ userId String
303
+
304
+ createdAt DateTime @default(now())
305
+ updatedAt DateTime @updatedAt
306
+ }
307
+
308
+ model Favorite {
309
+ id String @id @default(cuid())
310
+ user User @relation(fields: [userId], references: [id])
311
+ userId String
312
+ event Event @relation(fields: [eventId], references: [id])
313
+ eventId String
314
+
315
+ createdAt DateTime @default(now())
316
+ updatedAt DateTime @updatedAt
317
+ }
318
+
319
+ // Add new Order model
320
+ model Order {
321
+ id String @id @default(cuid())
322
+ user User @relation(fields: [userId], references: [id])
323
+ userId String
324
+
325
+ event Event @relation(fields: [eventId], references: [id])
326
+ eventId String
327
+
328
+ email String
329
+ status OrderStatus @default(PENDING)
330
+ totalAmount Float
331
+
332
+ items OrderItem[]
333
+
334
+ paymentIntentId String? @unique // For Stripe integration
335
+ paymentStatus PaymentStatus @default(PENDING)
336
+
337
+ createdAt DateTime @default(now())
338
+ updatedAt DateTime @updatedAt
339
+ }
340
+
341
+ // Add new OrderItem model
342
+ model OrderItem {
343
+ id String @id @default(cuid())
344
+ order Order @relation(fields: [orderId], references: [id])
345
+ orderId String
346
+
347
+ eventPrice EventPrice @relation(fields: [eventPriceId], references: [id])
348
+ eventPriceId String
349
+
350
+ quantity Int
351
+ unitPrice Float // Price at the time of purchase
352
+
353
+ createdAt DateTime @default(now())
354
+ updatedAt DateTime @updatedAt
355
+ }
356
+
357
+ enum OrderStatus {
358
+ PENDING
359
+ CONFIRMED
360
+ CANCELLED
361
+ REFUNDED
362
+ }
363
+
364
+ enum PaymentStatus {
365
+ PENDING
366
+ COMPLETED
367
+ FAILED
368
+ REFUNDED
369
+ }