|
1 | 1 | generator client {
|
2 |
| - provider = "prisma-client-js" |
| 2 | + provider = "prisma-client-js" |
3 | 3 | }
|
4 | 4 |
|
5 | 5 | datasource db {
|
6 |
| - provider = "mysql" |
7 |
| - url = env("DATABASE_URL") |
8 |
| - relationMode = "prisma" |
| 6 | + provider = "mysql" |
| 7 | + url = env("DATABASE_URL") |
| 8 | + relationMode = "prisma" |
9 | 9 | }
|
10 | 10 |
|
11 | 11 | model Settings {
|
12 |
| - setting SiteSettings @id |
13 |
| - value SiteSettingsValues |
| 12 | + setting SiteSettings @id |
| 13 | + value SiteSettingsValues |
14 | 14 | }
|
15 | 15 |
|
16 | 16 | // This should only be used for sitewide settings that can be any string.
|
17 | 17 | // For settings that are a boolean or have concrete types, use the SiteSettings enum.
|
18 | 18 | model VariableSettings {
|
19 |
| - setting VariableSiteSettings @id |
20 |
| - value String @default("") |
| 19 | + setting VariableSiteSettings @id |
| 20 | + value String @default("") |
21 | 21 | }
|
22 | 22 |
|
23 | 23 | model ChatMessage {
|
24 |
| - id Int @id @default(autoincrement()) |
25 |
| - createdAt DateTime @default(now()) |
26 |
| - message String @db.VarChar(1000) |
27 |
| - author User @relation(fields: [userId], references: [id]) |
28 |
| - ticket Ticket @relation(fields: [ticketId], references: [id]) |
29 |
| - userId String |
30 |
| - ticketId Int |
| 24 | + id Int @id @default(autoincrement()) |
| 25 | + createdAt DateTime @default(now()) |
| 26 | + message String @db.VarChar(1000) |
| 27 | + author User @relation(fields: [userId], references: [id]) |
| 28 | + ticket Ticket @relation(fields: [ticketId], references: [id]) |
| 29 | + visibleToStudents Boolean @default(true) |
| 30 | + userId String |
| 31 | + ticketId Int |
31 | 32 |
|
32 |
| - @@index([userId]) |
33 |
| - @@index([ticketId]) |
| 33 | + @@index([userId]) |
| 34 | + @@index([ticketId]) |
34 | 35 | }
|
35 | 36 |
|
36 | 37 | model Ticket {
|
37 |
| - id Int @id @default(autoincrement()) |
38 |
| - createdBy User @relation("ticketsCreatedBy", fields: [createdByUserId], references: [id]) |
39 |
| - helpedBy User? @relation("ticketsHelpedBy", fields: [helpedByUserId], references: [id]) |
40 |
| - helpedAt DateTime? |
41 |
| - resolvedAt DateTime? |
42 |
| - markedAbsentAt DateTime? |
43 |
| - createdAt DateTime @default(now()) |
44 |
| - updatedAt DateTime @default(now()) @updatedAt |
45 |
| - status TicketStatus @default(PENDING) |
46 |
| - description String? @db.VarChar(1000) |
47 |
| - assignment Assignment @relation(fields: [assignmentId], references: [id]) |
48 |
| - location Location @relation(fields: [locationId], references: [id]) |
49 |
| - locationDescription String? |
50 |
| - resolution String @default("") |
51 |
| - staffNotes String? |
52 |
| - ChatMessage ChatMessage[] |
53 |
| - isPublic Boolean @default(false) |
54 |
| - isPriority Boolean @default(false) |
55 |
| - usersInGroup User[] @relation("groupTickets") |
56 |
| - PersonalQueue PersonalQueue? @relation(fields: [personalQueueName], references: [name]) |
57 |
| - ticketType TicketType @default(DEBUGGING) |
58 |
| -
|
59 |
| - helpedByUserId String? |
60 |
| - createdByUserId String |
61 |
| - assignmentId Int |
62 |
| - locationId Int |
63 |
| - personalQueueId Int? |
64 |
| - personalQueueName String? |
65 |
| -
|
66 |
| - @@index([locationId]) |
67 |
| - @@index([assignmentId]) |
68 |
| - @@index([helpedByUserId]) |
69 |
| - @@index([createdByUserId]) |
70 |
| - @@index([personalQueueId]) |
71 |
| - @@index([personalQueueName]) |
72 |
| - @@index([status]) |
| 38 | + id Int @id @default(autoincrement()) |
| 39 | + createdBy User @relation("ticketsCreatedBy", fields: [createdByUserId], references: [id]) |
| 40 | + helpedBy User? @relation("ticketsHelpedBy", fields: [helpedByUserId], references: [id]) |
| 41 | + helpedAt DateTime? |
| 42 | + resolvedAt DateTime? |
| 43 | + markedAbsentAt DateTime? |
| 44 | + createdAt DateTime @default(now()) |
| 45 | + updatedAt DateTime @default(now()) @updatedAt |
| 46 | + status TicketStatus @default(PENDING) |
| 47 | + description String? @db.VarChar(1000) |
| 48 | + assignment Assignment @relation(fields: [assignmentId], references: [id]) |
| 49 | + location Location @relation(fields: [locationId], references: [id]) |
| 50 | + locationDescription String? |
| 51 | + resolution String @default("") |
| 52 | + staffNotes String? // Replaced with ChatMessage |
| 53 | + ChatMessage ChatMessage[] |
| 54 | + isPublic Boolean @default(false) |
| 55 | + isPriority Boolean @default(false) |
| 56 | + usersInGroup User[] @relation("groupTickets") |
| 57 | + PersonalQueue PersonalQueue? @relation(fields: [personalQueueName], references: [name]) |
| 58 | + ticketType TicketType @default(DEBUGGING) |
| 59 | +
|
| 60 | + helpedByUserId String? |
| 61 | + createdByUserId String |
| 62 | + assignmentId Int |
| 63 | + locationId Int |
| 64 | + personalQueueId Int? |
| 65 | + personalQueueName String? |
| 66 | +
|
| 67 | + @@index([locationId]) |
| 68 | + @@index([assignmentId]) |
| 69 | + @@index([helpedByUserId]) |
| 70 | + @@index([createdByUserId]) |
| 71 | + @@index([personalQueueId]) |
| 72 | + @@index([personalQueueName]) |
| 73 | + @@index([status]) |
73 | 74 | }
|
74 | 75 |
|
75 | 76 | model Account {
|
76 |
| - id String @id @default(cuid()) |
77 |
| - userId String |
78 |
| - type String |
79 |
| - provider String |
80 |
| - providerAccountId String |
81 |
| - refresh_token String? @db.Text |
82 |
| - access_token String? @db.Text |
83 |
| - expires_at Int? |
84 |
| - token_type String? |
85 |
| - scope String? |
86 |
| - id_token String? @db.Text |
87 |
| - session_state String? |
88 |
| - user User @relation(fields: [userId], references: [id], onDelete: Cascade) |
89 |
| -
|
90 |
| - @@unique([provider, providerAccountId]) |
91 |
| - @@index([userId]) |
| 77 | + id String @id @default(cuid()) |
| 78 | + userId String |
| 79 | + type String |
| 80 | + provider String |
| 81 | + providerAccountId String |
| 82 | + refresh_token String? @db.Text |
| 83 | + access_token String? @db.Text |
| 84 | + expires_at Int? |
| 85 | + token_type String? |
| 86 | + scope String? |
| 87 | + id_token String? @db.Text |
| 88 | + session_state String? |
| 89 | + user User @relation(fields: [userId], references: [id], onDelete: Cascade) |
| 90 | +
|
| 91 | + @@unique([provider, providerAccountId]) |
| 92 | + @@index([userId]) |
92 | 93 | }
|
93 | 94 |
|
94 | 95 | model User {
|
95 |
| - id String @id @default(cuid()) |
96 |
| - name String? |
97 |
| - preferredName String? |
98 |
| - email String? @unique |
99 |
| - emailVerified DateTime? |
100 |
| - image String? |
101 |
| - role UserRole @default(STUDENT) |
102 |
| - accounts Account[] |
103 |
| - sessions Session[] |
104 |
| - ticketsCreated Ticket[] @relation("ticketsCreatedBy") |
105 |
| - ticketsHelped Ticket[] @relation("ticketsHelpedBy") |
106 |
| - ticketsJoined Ticket[] @relation("groupTickets") |
107 |
| - ChatMessage ChatMessage[] |
108 |
| - PersonalQueue PersonalQueue? |
109 |
| -
|
110 |
| - @@index(id) |
| 96 | + id String @id @default(cuid()) |
| 97 | + name String? |
| 98 | + preferredName String? |
| 99 | + email String? @unique |
| 100 | + emailVerified DateTime? |
| 101 | + image String? |
| 102 | + role UserRole @default(STUDENT) |
| 103 | + accounts Account[] |
| 104 | + sessions Session[] |
| 105 | + ticketsCreated Ticket[] @relation("ticketsCreatedBy") |
| 106 | + ticketsHelped Ticket[] @relation("ticketsHelpedBy") |
| 107 | + ticketsJoined Ticket[] @relation("groupTickets") |
| 108 | + ChatMessage ChatMessage[] |
| 109 | + PersonalQueue PersonalQueue? |
| 110 | +
|
| 111 | + @@index(id) |
111 | 112 | }
|
112 | 113 |
|
113 | 114 | model Session {
|
114 |
| - id String @id @default(cuid()) |
115 |
| - sessionToken String @unique |
116 |
| - userId String |
117 |
| - expires DateTime |
118 |
| - user User @relation(fields: [userId], references: [id], onDelete: Cascade) |
| 115 | + id String @id @default(cuid()) |
| 116 | + sessionToken String @unique |
| 117 | + userId String |
| 118 | + expires DateTime |
| 119 | + user User @relation(fields: [userId], references: [id], onDelete: Cascade) |
119 | 120 |
|
120 |
| - @@index([userId]) |
| 121 | + @@index([userId]) |
121 | 122 | }
|
122 | 123 |
|
123 | 124 | model Assignment {
|
124 |
| - id Int @id @default(autoincrement()) |
125 |
| - name String |
126 |
| - createdAt DateTime @default(now()) |
127 |
| - updatedAt DateTime @default(now()) @updatedAt |
128 |
| - isActive Boolean @default(true) |
129 |
| - isHidden Boolean @default(false) |
130 |
| - isPriority Boolean @default(false) |
131 |
| - Ticket Ticket[] |
| 125 | + id Int @id @default(autoincrement()) |
| 126 | + name String |
| 127 | + createdAt DateTime @default(now()) |
| 128 | + updatedAt DateTime @default(now()) @updatedAt |
| 129 | + isActive Boolean @default(true) |
| 130 | + isHidden Boolean @default(false) |
| 131 | + isPriority Boolean @default(false) |
| 132 | + Ticket Ticket[] |
132 | 133 |
|
133 |
| - @@index(id) |
| 134 | + @@index(id) |
134 | 135 | }
|
135 | 136 |
|
136 | 137 | model Location {
|
137 |
| - id Int @id @default(autoincrement()) |
138 |
| - name String |
139 |
| - createdAt DateTime @default(now()) |
140 |
| - updatedAt DateTime @default(now()) @updatedAt |
141 |
| - isActive Boolean @default(true) |
142 |
| - isHidden Boolean @default(false) |
143 |
| - Ticket Ticket[] |
| 138 | + id Int @id @default(autoincrement()) |
| 139 | + name String |
| 140 | + createdAt DateTime @default(now()) |
| 141 | + updatedAt DateTime @default(now()) @updatedAt |
| 142 | + isActive Boolean @default(true) |
| 143 | + isHidden Boolean @default(false) |
| 144 | + Ticket Ticket[] |
144 | 145 |
|
145 |
| - @@index(id) |
| 146 | + @@index(id) |
146 | 147 | }
|
147 | 148 |
|
148 | 149 | model PersonalQueue {
|
149 |
| - name String @id |
150 |
| - createdAt DateTime @default(now()) |
151 |
| - updatedAt DateTime @default(now()) @updatedAt |
152 |
| - owner User @relation(fields: [ownerId], references: [id]) |
153 |
| - ownerId String @unique |
154 |
| - isOpen Boolean @default(false) |
155 |
| - allowStaffToOpen Boolean @default(false) |
156 |
| - Ticket Ticket[] |
| 150 | + name String @id |
| 151 | + createdAt DateTime @default(now()) |
| 152 | + updatedAt DateTime @default(now()) @updatedAt |
| 153 | + owner User @relation(fields: [ownerId], references: [id]) |
| 154 | + ownerId String @unique |
| 155 | + isOpen Boolean @default(false) |
| 156 | + allowStaffToOpen Boolean @default(false) |
| 157 | + Ticket Ticket[] |
157 | 158 |
|
158 |
| - @@index([ownerId]) |
| 159 | + @@index([ownerId]) |
159 | 160 | }
|
160 | 161 |
|
161 | 162 | model ConfirmedUser {
|
162 |
| - id Int @id @default(autoincrement()) |
163 |
| - email String @unique |
164 |
| - role UserRole @default(STUDENT) |
165 |
| - createdAt DateTime @default(now()) |
| 163 | + id Int @id @default(autoincrement()) |
| 164 | + email String @unique |
| 165 | + role UserRole @default(STUDENT) |
| 166 | + createdAt DateTime @default(now()) |
166 | 167 | }
|
167 | 168 |
|
168 | 169 | model VerificationToken {
|
169 |
| - identifier String |
170 |
| - token String @unique |
171 |
| - expires DateTime |
| 170 | + identifier String |
| 171 | + token String @unique |
| 172 | + expires DateTime |
172 | 173 |
|
173 |
| - @@unique([identifier, token]) |
| 174 | + @@unique([identifier, token]) |
174 | 175 | }
|
175 | 176 |
|
176 | 177 | // This is automatically generated by Prisma
|
177 | 178 | model groupTickets {
|
178 |
| - A Int |
179 |
| - B String |
| 179 | + A Int |
| 180 | + B String |
180 | 181 |
|
181 |
| - @@unique([A, B], map: "_groupTickets_AB_unique") |
182 |
| - @@index([B], map: "_groupTickets_B_index") |
183 |
| - @@map("_groupTickets") |
| 182 | + @@unique([A, B], map: "_groupTickets_AB_unique") |
| 183 | + @@index([B], map: "_groupTickets_B_index") |
| 184 | + @@map("_groupTickets") |
184 | 185 | }
|
185 | 186 |
|
186 | 187 | enum UserRole {
|
187 |
| - STUDENT |
188 |
| - STAFF |
189 |
| - INTERN |
| 188 | + STUDENT |
| 189 | + STAFF |
| 190 | + INTERN |
190 | 191 | }
|
191 | 192 |
|
192 | 193 | enum TicketStatus {
|
193 |
| - PENDING |
194 |
| - OPEN |
195 |
| - ASSIGNED |
196 |
| - RESOLVED |
197 |
| - CLOSED |
198 |
| - ABSENT |
| 194 | + PENDING |
| 195 | + OPEN |
| 196 | + ASSIGNED |
| 197 | + RESOLVED |
| 198 | + CLOSED |
| 199 | + ABSENT |
199 | 200 | }
|
200 | 201 |
|
201 | 202 | enum TicketType {
|
202 |
| - CONCEPTUAL |
203 |
| - DEBUGGING |
| 203 | + CONCEPTUAL |
| 204 | + DEBUGGING |
204 | 205 | }
|
205 | 206 |
|
206 | 207 | enum SiteSettings {
|
207 |
| - IS_PENDING_STAGE_ENABLED |
208 |
| - ARE_PUBLIC_TICKETS_ENABLED |
209 |
| - IS_QUEUE_OPEN |
210 |
| - IMPORT_USERS_METHOD // IMPORT_STAFF or IMPORT_STAFF_AND_STUDENTS |
| 208 | + IS_PENDING_STAGE_ENABLED |
| 209 | + ARE_PUBLIC_TICKETS_ENABLED |
| 210 | + IS_QUEUE_OPEN |
| 211 | + IMPORT_USERS_METHOD // IMPORT_STAFF or IMPORT_STAFF_AND_STUDENTS |
211 | 212 | }
|
212 | 213 |
|
213 | 214 | enum SiteSettingsValues {
|
214 |
| - TRUE |
215 |
| - FALSE |
216 |
| - IMPORT_STAFF |
217 |
| - IMPORT_STAFF_AND_STUDENTS |
| 215 | + TRUE |
| 216 | + FALSE |
| 217 | + IMPORT_STAFF |
| 218 | + IMPORT_STAFF_AND_STUDENTS |
218 | 219 | }
|
219 | 220 |
|
220 | 221 | enum VariableSiteSettings {
|
221 |
| - EMAIL_DOMAIN |
| 222 | + EMAIL_DOMAIN |
222 | 223 | }
|
0 commit comments