Skip to content

Commit 81ca6cc

Browse files
authored
Integrate staff notes in chat (#135)
1 parent 8e8f51a commit 81ca6cc

File tree

7 files changed

+278
-292
lines changed

7 files changed

+278
-292
lines changed

prisma/schema.prisma

Lines changed: 151 additions & 150 deletions
Original file line numberDiff line numberDiff line change
@@ -1,222 +1,223 @@
11
generator client {
2-
provider = "prisma-client-js"
2+
provider = "prisma-client-js"
33
}
44

55
datasource db {
6-
provider = "mysql"
7-
url = env("DATABASE_URL")
8-
relationMode = "prisma"
6+
provider = "mysql"
7+
url = env("DATABASE_URL")
8+
relationMode = "prisma"
99
}
1010

1111
model Settings {
12-
setting SiteSettings @id
13-
value SiteSettingsValues
12+
setting SiteSettings @id
13+
value SiteSettingsValues
1414
}
1515

1616
// This should only be used for sitewide settings that can be any string.
1717
// For settings that are a boolean or have concrete types, use the SiteSettings enum.
1818
model VariableSettings {
19-
setting VariableSiteSettings @id
20-
value String @default("")
19+
setting VariableSiteSettings @id
20+
value String @default("")
2121
}
2222

2323
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
3132
32-
@@index([userId])
33-
@@index([ticketId])
33+
@@index([userId])
34+
@@index([ticketId])
3435
}
3536

3637
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])
7374
}
7475

7576
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])
9293
}
9394

9495
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)
111112
}
112113

113114
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)
119120
120-
@@index([userId])
121+
@@index([userId])
121122
}
122123

123124
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[]
132133
133-
@@index(id)
134+
@@index(id)
134135
}
135136

136137
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[]
144145
145-
@@index(id)
146+
@@index(id)
146147
}
147148

148149
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[]
157158
158-
@@index([ownerId])
159+
@@index([ownerId])
159160
}
160161

161162
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())
166167
}
167168

168169
model VerificationToken {
169-
identifier String
170-
token String @unique
171-
expires DateTime
170+
identifier String
171+
token String @unique
172+
expires DateTime
172173
173-
@@unique([identifier, token])
174+
@@unique([identifier, token])
174175
}
175176

176177
// This is automatically generated by Prisma
177178
model groupTickets {
178-
A Int
179-
B String
179+
A Int
180+
B String
180181
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")
184185
}
185186

186187
enum UserRole {
187-
STUDENT
188-
STAFF
189-
INTERN
188+
STUDENT
189+
STAFF
190+
INTERN
190191
}
191192

192193
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
199200
}
200201

201202
enum TicketType {
202-
CONCEPTUAL
203-
DEBUGGING
203+
CONCEPTUAL
204+
DEBUGGING
204205
}
205206

206207
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
211212
}
212213

213214
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
218219
}
219220

220221
enum VariableSiteSettings {
221-
EMAIL_DOMAIN
222+
EMAIL_DOMAIN
222223
}

0 commit comments

Comments
 (0)