@@ -37,6 +37,9 @@ model scorecard {
37
37
@@index ([challengeTrack ] )
38
38
@@index ([challengeType ] )
39
39
@@index ([name ] )
40
+ @@index ([id ] ) // Index for direct ID lookups
41
+ @@index ([type ] ) // Index for filtering by scorecard type
42
+ @@index ([status ] ) // Index for filtering by status (e.g. ACTIVE scorecards)
40
43
}
41
44
42
45
enum ScorecardStatus {
@@ -77,6 +80,10 @@ model scorecardGroup {
77
80
78
81
scorecard scorecard @relation (fields : [scorecardId ] , references : [id ] , onDelete : Cascade )
79
82
sections scorecardSection []
83
+
84
+ @@index ([id ] ) // Index for direct ID lookups
85
+ @@index ([scorecardId ] ) // Index for joining with scorecard table
86
+ @@index ([sortOrder ] ) // Index for ordering groups
80
87
}
81
88
82
89
model scorecardSection {
@@ -93,6 +100,10 @@ model scorecardSection {
93
100
94
101
group scorecardGroup @relation (fields : [scorecardGroupId ] , references : [id ] , onDelete : Cascade )
95
102
questions scorecardQuestion []
103
+
104
+ @@index ([id ] ) // Index for direct ID lookups
105
+ @@index ([scorecardGroupId ] ) // Index for joining with scorecardGroup table
106
+ @@index ([sortOrder ] ) // Index for ordering sections
96
107
}
97
108
98
109
enum QuestionType {
@@ -121,6 +132,11 @@ model scorecardQuestion {
121
132
scaleMax Int ? // Maximum value for scale (used when type is SCALE)
122
133
123
134
section scorecardSection @relation (fields : [scorecardSectionId ] , references : [id ] , onDelete : Cascade )
135
+
136
+ @@index ([id ] ) // Index for direct ID lookups
137
+ @@index ([scorecardSectionId ] ) // Index for joining with scorecardSection table
138
+ @@index ([type ] ) // Index for filtering questions by type
139
+ @@index ([sortOrder ] ) // Index for ordering questions
124
140
}
125
141
126
142
model review {
@@ -141,9 +157,12 @@ model review {
141
157
scorecard scorecard @relation (fields : [scorecardId ] , references : [id ] , onDelete : Cascade )
142
158
reviewItems reviewItem []
143
159
144
- @@index ([committed ] ) // Add index for the committed field
145
- @@index ([submissionId ] ) // Index for submissionId field
146
- @@index ([resourceId ] ) // Index for resourceId field
160
+ @@index ([committed ] ) // Index for filtering by committed status
161
+ @@index ([submissionId ] ) // Index for filtering by submission
162
+ @@index ([resourceId ] ) // Index for filtering by resource (reviewer)
163
+ @@index ([id ] ) // Index for direct ID lookups
164
+ @@index ([phaseId ] ) // Index for filtering by phase
165
+ @@index ([scorecardId ] ) // Index for joining with scorecard table
147
166
}
148
167
149
168
model reviewItem {
@@ -162,8 +181,9 @@ model reviewItem {
162
181
163
182
review review @relation (fields : [reviewId ] , references : [id ] , onDelete : Cascade )
164
183
reviewItemComments reviewItemComment []
165
- @@index ([reviewId ] ) // Index for reviewId field
166
- @@index ([id ] ) // Index for id field
184
+ @@index ([reviewId ] ) // Index for joining with review table
185
+ @@index ([id ] ) // Index for direct ID lookups
186
+ @@index ([scorecardQuestionId ] ) // Index for joining with scorecardQuestion table
167
187
}
168
188
169
189
model reviewItemComment {
@@ -181,8 +201,10 @@ model reviewItemComment {
181
201
182
202
reviewItem reviewItem @relation (fields : [reviewItemId ] , references : [id ] , onDelete : Cascade )
183
203
appeal appeal ?
184
- @@index ([reviewItemId ] ) // Index for reviewItemId field
185
- @@index ([id ] ) // Index for id field
204
+ @@index ([reviewItemId ] ) // Index for joining with reviewItem table
205
+ @@index ([id ] ) // Index for direct ID lookups
206
+ @@index ([resourceId ] ) // Index for filtering by resource (commenter)
207
+ @@index ([type ] ) // Index for filtering by comment type
186
208
}
187
209
188
210
enum ReviewItemCommentType {
@@ -214,7 +236,9 @@ model appeal {
214
236
reviewItemComment reviewItemComment @relation (fields : [reviewItemCommentId ] , references : [id ] , onDelete : Cascade ) // Define fields and references here
215
237
appealResponse appealResponse ?
216
238
217
- @@index ([resourceId ] ) // Index for resourceId field
239
+ @@index ([resourceId ] ) // Index for resource ID
240
+ @@index ([id ] ) // Index for direct ID lookups
241
+ @@index ([reviewItemCommentId ] ) // Index for joining with reviewItemComment table
218
242
}
219
243
220
244
model appealResponse {
@@ -230,6 +254,10 @@ model appealResponse {
230
254
updatedBy String
231
255
232
256
appeal appeal @relation (fields : [appealId ] , references : [id ] , onDelete : Cascade )
257
+
258
+ @@index ([id ] ) // Index for direct ID lookups
259
+ @@index ([appealId ] ) // Index for joining with appeal table
260
+ @@index ([resourceId ] ) // Index for filtering by resource (responder)
233
261
}
234
262
235
263
model challengeResult {
@@ -254,6 +282,9 @@ model challengeResult {
254
282
updatedBy String
255
283
256
284
@@id ([challengeId , userId ] )
285
+ @@index ([challengeId ] ) // Index for filtering by challenge
286
+ @@index ([userId ] ) // Index for filtering by user
287
+ @@index ([submissionId ] ) // Index for filtering by submission
257
288
}
258
289
259
290
model contactRequest {
@@ -265,4 +296,8 @@ model contactRequest {
265
296
createdBy String
266
297
updatedAt DateTime @updatedAt
267
298
updatedBy String
299
+
300
+ @@index ([id ] ) // Index for direct ID lookups
301
+ @@index ([resourceId ] ) // Index for filtering by resource (requester)
302
+ @@index ([challengeId ] ) // Index for filtering by challenge
268
303
}
0 commit comments