tabletcommand-backend-models 7.1.1 → 7.2.0

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.
Files changed (207) hide show
  1. package/build/helpers.js +5 -1
  2. package/build/helpers.js.map +1 -1
  3. package/build/index.js +2 -1
  4. package/build/index.js.map +1 -1
  5. package/build/models/action-log.js +6 -0
  6. package/build/models/action-log.js.map +1 -1
  7. package/build/models/agency.js +35 -0
  8. package/build/models/agency.js.map +1 -1
  9. package/build/models/arcgis-group.js +9 -1
  10. package/build/models/arcgis-group.js.map +1 -1
  11. package/build/models/assignment.js +21 -4
  12. package/build/models/assignment.js.map +1 -1
  13. package/build/models/battalion.js +39 -15
  14. package/build/models/battalion.js.map +1 -1
  15. package/build/models/beacon-log.js +5 -1
  16. package/build/models/beacon-log.js.map +1 -1
  17. package/build/models/cad-incident-block.js +7 -1
  18. package/build/models/cad-incident-block.js.map +1 -1
  19. package/build/models/cad-incident-stream.js +27 -1
  20. package/build/models/cad-incident-stream.js.map +1 -1
  21. package/build/models/cad-incident.js +98 -1
  22. package/build/models/cad-incident.js.map +1 -1
  23. package/build/models/cad-simulation.js +0 -2
  24. package/build/models/cad-simulation.js.map +1 -1
  25. package/build/models/cad-status-map.js +5 -1
  26. package/build/models/cad-status-map.js.map +1 -1
  27. package/build/models/cad-status.js +11 -2
  28. package/build/models/cad-status.js.map +1 -1
  29. package/build/models/cad-vehicle-status-history.js +41 -2
  30. package/build/models/cad-vehicle-status-history.js.map +1 -1
  31. package/build/models/cad-vehicle-status.js +44 -2
  32. package/build/models/cad-vehicle-status.js.map +1 -1
  33. package/build/models/cad-vehicle.js +30 -2
  34. package/build/models/cad-vehicle.js.map +1 -1
  35. package/build/models/chart-device-stats.js +7 -1
  36. package/build/models/chart-device-stats.js.map +1 -1
  37. package/build/models/chart-incident.js +12 -1
  38. package/build/models/chart-incident.js.map +1 -1
  39. package/build/models/chart-managed-incident.js +19 -1
  40. package/build/models/chart-managed-incident.js.map +1 -1
  41. package/build/models/chart-user.js +12 -1
  42. package/build/models/chart-user.js.map +1 -1
  43. package/build/models/checklist-item.js +0 -1
  44. package/build/models/checklist-item.js.map +1 -1
  45. package/build/models/checklist.js +26 -4
  46. package/build/models/checklist.js.map +1 -1
  47. package/build/models/csv-import.js +6 -0
  48. package/build/models/csv-import.js.map +1 -1
  49. package/build/models/department.js +31 -6
  50. package/build/models/department.js.map +1 -1
  51. package/build/models/device-mapping.js +16 -0
  52. package/build/models/device-mapping.js.map +1 -1
  53. package/build/models/esri.js +6 -0
  54. package/build/models/esri.js.map +1 -1
  55. package/build/models/incident-event.js +38 -6
  56. package/build/models/incident-event.js.map +1 -1
  57. package/build/models/incident-notified.js +20 -1
  58. package/build/models/incident-notified.js.map +1 -1
  59. package/build/models/incident-takeover.js +6 -1
  60. package/build/models/incident-takeover.js.map +1 -1
  61. package/build/models/location.js +117 -6
  62. package/build/models/location.js.map +1 -1
  63. package/build/models/mail-log.js +5 -0
  64. package/build/models/mail-log.js.map +1 -1
  65. package/build/models/managed-incident.js +67 -4
  66. package/build/models/managed-incident.js.map +1 -1
  67. package/build/models/mark43-incident-retry.js +0 -1
  68. package/build/models/mark43-incident-retry.js.map +1 -1
  69. package/build/models/message.js +19 -1
  70. package/build/models/message.js.map +1 -1
  71. package/build/models/monitor.js +15 -1
  72. package/build/models/monitor.js.map +1 -1
  73. package/build/models/personnel-import.js +74 -0
  74. package/build/models/personnel-import.js.map +1 -1
  75. package/build/models/personnel-known.js +8 -0
  76. package/build/models/personnel-known.js.map +1 -1
  77. package/build/models/rate-limit.js +6 -0
  78. package/build/models/rate-limit.js.map +1 -1
  79. package/build/models/remote-log-stream.js +0 -1
  80. package/build/models/remote-log-stream.js.map +1 -1
  81. package/build/models/remote-log.js +0 -1
  82. package/build/models/remote-log.js.map +1 -1
  83. package/build/models/schema/agency-saml.js +1 -1
  84. package/build/models/schema/agency-saml.js.map +1 -1
  85. package/build/models/schema/cad-incident.js +0 -1
  86. package/build/models/schema/cad-incident.js.map +1 -1
  87. package/build/models/session.js +44 -6
  88. package/build/models/session.js.map +1 -1
  89. package/build/models/template.js +17 -7
  90. package/build/models/template.js.map +1 -1
  91. package/build/models/user-device.js +17 -0
  92. package/build/models/user-device.js.map +1 -1
  93. package/build/models/user-registration.js +5 -1
  94. package/build/models/user-registration.js.map +1 -1
  95. package/build/models/user.js +59 -6
  96. package/build/models/user.js.map +1 -1
  97. package/build/models/validation-report.js +6 -1
  98. package/build/models/validation-report.js.map +1 -1
  99. package/build/test/location.js +1 -1
  100. package/build/test/location.js.map +1 -1
  101. package/build/test/mock.js +5 -2
  102. package/build/test/mock.js.map +1 -1
  103. package/cspell.json +1 -0
  104. package/definitions/helpers.d.ts +27 -26
  105. package/definitions/helpers.d.ts.map +1 -1
  106. package/definitions/index.d.ts +4 -4
  107. package/definitions/index.d.ts.map +1 -1
  108. package/definitions/models/action-log.d.ts.map +1 -1
  109. package/definitions/models/agency.d.ts.map +1 -1
  110. package/definitions/models/arcgis-group.d.ts.map +1 -1
  111. package/definitions/models/assignment.d.ts.map +1 -1
  112. package/definitions/models/battalion.d.ts.map +1 -1
  113. package/definitions/models/beacon-log.d.ts.map +1 -1
  114. package/definitions/models/cad-incident-block.d.ts.map +1 -1
  115. package/definitions/models/cad-incident-stream.d.ts.map +1 -1
  116. package/definitions/models/cad-incident.d.ts.map +1 -1
  117. package/definitions/models/cad-simulation.d.ts.map +1 -1
  118. package/definitions/models/cad-status-map.d.ts.map +1 -1
  119. package/definitions/models/cad-status.d.ts.map +1 -1
  120. package/definitions/models/cad-vehicle-status-history.d.ts.map +1 -1
  121. package/definitions/models/cad-vehicle-status.d.ts.map +1 -1
  122. package/definitions/models/cad-vehicle.d.ts.map +1 -1
  123. package/definitions/models/chart-device-stats.d.ts.map +1 -1
  124. package/definitions/models/chart-incident.d.ts.map +1 -1
  125. package/definitions/models/chart-managed-incident.d.ts.map +1 -1
  126. package/definitions/models/chart-user.d.ts.map +1 -1
  127. package/definitions/models/checklist-item.d.ts.map +1 -1
  128. package/definitions/models/checklist.d.ts.map +1 -1
  129. package/definitions/models/csv-import.d.ts.map +1 -1
  130. package/definitions/models/department.d.ts.map +1 -1
  131. package/definitions/models/device-mapping.d.ts.map +1 -1
  132. package/definitions/models/esri.d.ts.map +1 -1
  133. package/definitions/models/incident-event.d.ts.map +1 -1
  134. package/definitions/models/incident-notified.d.ts.map +1 -1
  135. package/definitions/models/incident-takeover.d.ts.map +1 -1
  136. package/definitions/models/location.d.ts.map +1 -1
  137. package/definitions/models/mail-log.d.ts.map +1 -1
  138. package/definitions/models/managed-incident.d.ts.map +1 -1
  139. package/definitions/models/mark43-incident-retry.d.ts.map +1 -1
  140. package/definitions/models/message.d.ts.map +1 -1
  141. package/definitions/models/monitor.d.ts.map +1 -1
  142. package/definitions/models/personnel-import.d.ts.map +1 -1
  143. package/definitions/models/personnel-known.d.ts.map +1 -1
  144. package/definitions/models/rate-limit.d.ts.map +1 -1
  145. package/definitions/models/remote-log-stream.d.ts.map +1 -1
  146. package/definitions/models/remote-log.d.ts.map +1 -1
  147. package/definitions/models/schema/cad-incident.d.ts.map +1 -1
  148. package/definitions/models/session.d.ts.map +1 -1
  149. package/definitions/models/template.d.ts.map +1 -1
  150. package/definitions/models/user-device.d.ts.map +1 -1
  151. package/definitions/models/user-registration.d.ts.map +1 -1
  152. package/definitions/models/user.d.ts.map +1 -1
  153. package/definitions/models/validation-report.d.ts.map +1 -1
  154. package/definitions/test/mock.d.ts.map +1 -1
  155. package/package.json +6 -5
  156. package/src/helpers.ts +4 -0
  157. package/src/index.ts +2 -1
  158. package/src/models/action-log.ts +8 -0
  159. package/src/models/agency.ts +41 -0
  160. package/src/models/arcgis-group.ts +10 -1
  161. package/src/models/assignment.ts +24 -4
  162. package/src/models/battalion.ts +42 -16
  163. package/src/models/beacon-log.ts +6 -1
  164. package/src/models/cad-incident-block.ts +8 -1
  165. package/src/models/cad-incident-stream.ts +31 -1
  166. package/src/models/cad-incident.ts +111 -1
  167. package/src/models/cad-simulation.ts +0 -2
  168. package/src/models/cad-status-map.ts +6 -1
  169. package/src/models/cad-status.ts +13 -2
  170. package/src/models/cad-vehicle-status-history.ts +47 -2
  171. package/src/models/cad-vehicle-status.ts +51 -3
  172. package/src/models/cad-vehicle.ts +35 -2
  173. package/src/models/chart-device-stats.ts +8 -1
  174. package/src/models/chart-incident.ts +14 -1
  175. package/src/models/chart-managed-incident.ts +22 -1
  176. package/src/models/chart-user.ts +14 -1
  177. package/src/models/checklist-item.ts +0 -1
  178. package/src/models/checklist.ts +28 -4
  179. package/src/models/csv-import.ts +7 -0
  180. package/src/models/department.ts +35 -7
  181. package/src/models/device-mapping.ts +19 -0
  182. package/src/models/esri.ts +7 -0
  183. package/src/models/incident-event.ts +45 -6
  184. package/src/models/incident-notified.ts +23 -1
  185. package/src/models/incident-takeover.ts +7 -1
  186. package/src/models/location.ts +133 -8
  187. package/src/models/mail-log.ts +6 -0
  188. package/src/models/managed-incident.ts +75 -4
  189. package/src/models/mark43-incident-retry.ts +0 -1
  190. package/src/models/message.ts +22 -1
  191. package/src/models/monitor.ts +17 -1
  192. package/src/models/personnel-import.ts +84 -0
  193. package/src/models/personnel-known.ts +9 -0
  194. package/src/models/rate-limit.ts +7 -0
  195. package/src/models/remote-log-stream.ts +0 -1
  196. package/src/models/remote-log.ts +0 -1
  197. package/src/models/schema/agency-saml.ts +1 -1
  198. package/src/models/schema/cad-incident.ts +0 -1
  199. package/src/models/session.ts +49 -6
  200. package/src/models/template.ts +17 -7
  201. package/src/models/user-device.ts +20 -0
  202. package/src/models/user-registration.ts +6 -1
  203. package/src/models/user.ts +65 -7
  204. package/src/models/validation-report.ts +7 -1
  205. package/src/test/location.ts +2 -2
  206. package/src/test/mock.ts +7 -2
  207. package/test.sh +1 -1
@@ -44,13 +44,11 @@ export function IncidentEventSchema(mongoose: MongooseModule) {
44
44
  type: String,
45
45
  default: "",
46
46
  required: true,
47
- index: true,
48
47
  },
49
48
  IncidentNumber: {
50
49
  type: String,
51
50
  default: "",
52
51
  required: true,
53
- index: true,
54
52
  },
55
53
  modified_unix_date: {
56
54
  type: Number,
@@ -113,10 +111,10 @@ export function IncidentEventSchema(mongoose: MongooseModule) {
113
111
  },
114
112
  }, {
115
113
  autoIndex: false,
116
- });
117
- modelSchema.set("toJSON", {
118
- virtuals: true,
119
- versionKey: false,
114
+ toJSON: {
115
+ virtuals: true,
116
+ versionKey: false,
117
+ }
120
118
  });
121
119
 
122
120
  modelSchema.virtual("id").get(function(this: MongooseDocument) {
@@ -124,12 +122,53 @@ export function IncidentEventSchema(mongoose: MongooseModule) {
124
122
  return this._id.toString();
125
123
  });
126
124
 
125
+ // Indexes are not defined here because this type is reused in CADIncident
126
+
127
127
  modelSchema.plugin(mongooseLeanVirtuals);
128
128
  return modelSchema;
129
129
  }
130
130
 
131
131
  export default async function IncidentEventModule(mongoose: MongooseModule) {
132
132
  const modelSchema = IncidentEventSchema(mongoose);
133
+
134
+ // Define indexes here
135
+ modelSchema.index({
136
+ departmentId: 1,
137
+ IncidentNumber: 1
138
+ }, {
139
+ name: "departmentId_1_IncidentNumber_1",
140
+ });
141
+
142
+ modelSchema.index({
143
+ departmentId: 1,
144
+ IncidentNumber: 1,
145
+ modified_unix_date: 1,
146
+ }, {
147
+ name: "departmentId_1_IncidentNumber_1_modified_unix_date_1",
148
+ });
149
+
150
+ modelSchema.index({
151
+ departmentId: 1,
152
+ archived: 1
153
+ }, {
154
+ name: "departmentId_1_archived_1",
155
+ });
156
+
157
+ modelSchema.index({
158
+ departmentId: 1,
159
+ modified_unix_date: 1,
160
+ archived: 1
161
+ }, {
162
+ name: "departmentId_1_modified_unix_date_1_archived_1",
163
+ });
164
+
165
+ modelSchema.index({
166
+ departmentId: 1,
167
+ type: 1
168
+ }, {
169
+ name: "departmentId_1_type_1",
170
+ });
171
+
133
172
  return mongoose.model<IncidentEvent>("IncidentEvent", modelSchema, "massive_incident_event", { overwriteModels: true });
134
173
  }
135
174
 
@@ -51,7 +51,6 @@ export default async function IncidentNotifiedModule(mongoose: MongooseModule) {
51
51
  type: String,
52
52
  default: "",
53
53
  required: true,
54
- index: true,
55
54
  },
56
55
  IncidentNumber: {
57
56
  type: String,
@@ -81,6 +80,29 @@ export default async function IncidentNotifiedModule(mongoose: MongooseModule) {
81
80
  autoIndex: false,
82
81
  });
83
82
 
83
+ modelSchema.index({
84
+ departmentId: 1,
85
+ updated: 1
86
+ }, {
87
+ name: "departmentId_1_updated_1",
88
+ });
89
+
90
+ // TODO: Review this
91
+ // modelSchema.index({
92
+ // departmentId: 1,
93
+ // IncidentNumber: 1
94
+ // }, {
95
+ // name: "departmentId_1_IncidentNumber_1",
96
+ // });
97
+
98
+ modelSchema.index({
99
+ departmentId: 1,
100
+ IncidentNumber: 1
101
+ }, {
102
+ name: "departmentId_1_IncidentNumber_1_unique",
103
+ unique: true,
104
+ });
105
+
84
106
  return mongoose.model<IncidentNotified>("IncidentNotified", modelSchema, "massive_incident_notified", { overwriteModels: true });
85
107
  }
86
108
 
@@ -19,7 +19,6 @@ export default async function IncidentTakeoverModule(mongoose: MongooseModule) {
19
19
  type: String,
20
20
  default: "",
21
21
  required: true,
22
- index: true,
23
22
  },
24
23
  uuid: {
25
24
  type: String,
@@ -74,6 +73,13 @@ export default async function IncidentTakeoverModule(mongoose: MongooseModule) {
74
73
  autoIndex: false,
75
74
  });
76
75
 
76
+ modelSchema.index({
77
+ departmentId: 1,
78
+ incident_id: 1
79
+ }, {
80
+ name: "departmentId_1_incident_id_1",
81
+ });
82
+
77
83
  return mongoose.model<IncidentTakeover>("IncidentTakeover", modelSchema, "massive_incident_takeover", { overwriteModels: true });
78
84
  }
79
85
 
@@ -20,7 +20,6 @@ export default async function LocationModule(mongoose: MongooseModule) {
20
20
  const Color = ColorModule(mongoose);
21
21
  const GeoJSONPoint = GeoJSONPointModule(mongoose);
22
22
 
23
-
24
23
  const modelSchema = new Schema<LocationType>({
25
24
  _id: {
26
25
  type: Schema.Types.ObjectId,
@@ -30,7 +29,6 @@ export default async function LocationModule(mongoose: MongooseModule) {
30
29
  type: String,
31
30
  default: "",
32
31
  required: true,
33
- index: true,
34
32
  },
35
33
  userId: {
36
34
  type: String,
@@ -183,11 +181,10 @@ export default async function LocationModule(mongoose: MongooseModule) {
183
181
  },
184
182
  }, {
185
183
  autoIndex: false,
186
- });
187
-
188
- modelSchema.set("toJSON", {
189
- virtuals: true,
190
- versionKey: false,
184
+ toJSON: {
185
+ virtuals: true,
186
+ versionKey: false,
187
+ }
191
188
  });
192
189
 
193
190
  modelSchema.virtual("id").get(function(this: MongooseDocument) {
@@ -212,12 +209,140 @@ export default async function LocationModule(mongoose: MongooseModule) {
212
209
  return location;
213
210
  });
214
211
 
212
+ modelSchema.index({
213
+ active: 1,
214
+ shared: 1,
215
+ departmentId: 1,
216
+ movedAt: 1
217
+ }, {
218
+ name: "active_1_shared_1_departmentId_1_movedAt_1",
219
+ });
220
+
221
+ modelSchema.index({
222
+ departmentId: 1,
223
+ active: 1,
224
+ movedAt: 1
225
+ }, {
226
+ name: "departmentId_1_active_1_movedAt_1",
227
+ });
228
+
229
+ modelSchema.index({
230
+ departmentId: 1,
231
+ agencyCode: 1,
232
+ agencyName: 1,
233
+ modified: 1
234
+ }, {
235
+ name: "departmentId_1_agencyCode_1_agencyName_1_modified_1",
236
+ });
237
+
238
+ modelSchema.index({
239
+ departmentId: 1,
240
+ modified: 1,
241
+ }, {
242
+ name: "departmentId_1_modified_1",
243
+ });
244
+
245
+ modelSchema.index({
246
+ departmentId: 1,
247
+ modified: 1,
248
+ movedAt: 1,
249
+ }, {
250
+ name: "departmentId_1_modified_1_movedAt_1",
251
+ });
252
+
253
+ modelSchema.index({
254
+ departmentId: 1,
255
+ opAreaCode: 1
256
+ }, {
257
+ name: "departmentId_1_opAreaCode_1",
258
+ });
259
+
260
+ modelSchema.index({
261
+ departmentId: 1,
262
+ opAreaName: 1
263
+ }, {
264
+ name: "departmentId_1_opAreaName_1",
265
+ });
266
+
267
+ modelSchema.index({
268
+ departmentId: 1,
269
+ session: 1,
270
+ device_type: 1
271
+ }, {
272
+ name: "departmentId_1_session_1_deviceType_1_unique",
273
+ unique: true,
274
+ });
275
+
276
+ modelSchema.index({
277
+ departmentId: 1,
278
+ shared: 1
279
+ }, {
280
+ name: "departmentId_1_shared_1",
281
+ });
282
+
283
+ modelSchema.index({
284
+ departmentId: 1,
285
+ state: 1
286
+ }, {
287
+ name: "departmentId_1_state_1",
288
+ });
289
+
290
+ modelSchema.index({
291
+ departmentId: 1,
292
+ username: 1
293
+ }, {
294
+ name: "departmentId_1_username_1",
295
+ });
296
+
297
+ modelSchema.index({
298
+ departmentId: 1,
299
+ device_type: 1,
300
+ userId: 1,
301
+ active: 1
302
+ }, {
303
+ name: "departmentId_deviceType_userId_active",
304
+ });
305
+
306
+ modelSchema.index({
307
+ esriId: 1,
308
+ modified: 1
309
+ }, {
310
+ name: "esriId_1_modified_1",
311
+ });
312
+
313
+ modelSchema.index({
314
+ session: 1,
315
+ userId: 1
316
+ }, {
317
+ name: "session_1_userId_1",
318
+ });
319
+
215
320
  // Create GeoJSON index
216
321
  modelSchema.index({
322
+ // This seems to need to be the first position, otherwise the query plan selects the wrong index (?)
217
323
  locationGeoJSON: "2dsphere",
218
324
  shared: 1,
219
- departmentId: 1,
220
325
  modified: 1,
326
+ movedAt: 1,
327
+ // departmentId: 1,
328
+ }, {
329
+ name: "shared_1_modified_1_movedAt_1_locationGeoJSON_2dsphere",
330
+ "2dsphereIndexVersion": 3
331
+ });
332
+
333
+ // Expire data after 45d
334
+ modelSchema.index({
335
+ movedAt: -1,
336
+ }, {
337
+ name: "ttl_45d_movedAt_-1",
338
+ expireAfterSeconds: 3888000,
339
+ });
340
+
341
+ modelSchema.index({
342
+ uuid: 1,
343
+ }, {
344
+ name: "uuid_1_unique",
345
+ unique: true,
221
346
  });
222
347
 
223
348
  modelSchema.plugin(mongooseLeanVirtuals);
@@ -79,6 +79,12 @@ export default async function MailLogModule(mongoose: MongooseModule) {
79
79
  autoIndex: false,
80
80
  });
81
81
 
82
+ modelSchema.index({
83
+ modified_unix_date: 1,
84
+ }, {
85
+ name: "modified_unix_date_1",
86
+ });
87
+
82
88
  return mongoose.model<MailLog>("MailLog", modelSchema, "massive_mail_log", { overwriteModels: true });
83
89
  }
84
90
 
@@ -397,7 +397,6 @@ export default async function ManagedIncidentModule(mongoose: MongooseModule) {
397
397
  type: String,
398
398
  default: "",
399
399
  required: true,
400
- index: true,
401
400
  },
402
401
  userId: {
403
402
  type: String,
@@ -562,17 +561,89 @@ export default async function ManagedIncidentModule(mongoose: MongooseModule) {
562
561
  },
563
562
  }, {
564
563
  autoIndex: false,
564
+ toJSON: {
565
+ virtuals: true,
566
+ versionKey: false,
567
+ },
565
568
  });
566
569
 
567
570
  modelSchema.virtual("id").get(function(this: ManagedIncident) {
568
571
  return this._id.toHexString();
569
572
  });
570
573
 
571
- modelSchema.set("toJSON", {
572
- virtuals: true,
573
- versionKey: false,
574
+ modelSchema.index({
575
+ departmentId: 1,
576
+ api_incident_number: 1
577
+ }, {
578
+ name: "departmentId_1_api_incident_number_1",
579
+ });
580
+
581
+ modelSchema.index({
582
+ departmentId: 1,
583
+ end_unix_time: 1,
584
+ }, {
585
+ name: "departmentId_1_end_unix_time_1",
586
+ });
587
+
588
+ modelSchema.index({
589
+ departmentId: 1,
590
+ end_unix_time: 1,
591
+ start_unix_time: -1,
592
+ }, {
593
+ name: "departmentId_1_end_unix_time_1_start_unix_time_-1",
594
+ });
595
+
596
+ modelSchema.index({
597
+ departmentId: 1,
598
+ extended: 1
599
+ }, {
600
+ name: "departmentId_1_extended_1",
601
+ });
602
+
603
+ modelSchema.index({
604
+ departmentId: 1,
605
+ is_closed: 1,
606
+ modified_unix_date: -1,
607
+ }, {
608
+ name: "departmentId_1_is_closed_1_modified_unix_date_-1",
609
+ });
610
+
611
+ modelSchema.index({
612
+ departmentId: 1,
613
+ modified_date: 1,
614
+ }, {
615
+ name: "departmentId_1_modified_date_1",
616
+ });
617
+
618
+ modelSchema.index({
619
+ departmentId: 1,
620
+ modified_unix_date: 1
621
+ }, {
622
+ name: "departmentId_1_modified_unix_date_1",
623
+ });
624
+
625
+ modelSchema.index({
626
+ departmentId: 1,
627
+ userId: 1,
628
+ start_unix_time: -1,
629
+ }, {
630
+ name: "departmentId_1_userId_1_start_unix_time_-1",
574
631
  });
575
632
 
633
+ modelSchema.index({
634
+ departmentId: 1,
635
+ start_unix_time: -1,
636
+ end_unix_time: 1
637
+ }, {
638
+ name: "departmentId_1_start_unix_time_-1_end_unix_time_1",
639
+ });
640
+
641
+ modelSchema.index({
642
+ uuid: 1,
643
+ }, {
644
+ name: "uuid_1",
645
+ unique: true,
646
+ });
576
647
 
577
648
  modelSchema.plugin(mongooseLeanVirtuals);
578
649
  return mongoose.model<ManagedIncident>("ManagedIncident", modelSchema, "massive_incident_managed", { overwriteModels: true });
@@ -46,7 +46,6 @@ export default async function Mark43IncidentRetryModule(mongoose: MongooseModule
46
46
  type: String,
47
47
  default: "",
48
48
  required: true,
49
- index: true,
50
49
  },
51
50
  created: {
52
51
  type: Date,
@@ -36,7 +36,6 @@ export default async function MessageModule(mongoose: MongooseModule) {
36
36
  type: String,
37
37
  default: "",
38
38
  required: true,
39
- index: true,
40
39
  },
41
40
  userId: {
42
41
  type: String,
@@ -98,6 +97,28 @@ export default async function MessageModule(mongoose: MongooseModule) {
98
97
  autoIndex: false,
99
98
  });
100
99
 
100
+ modelSchema.index({
101
+ departmentId: 1,
102
+ userId: 1,
103
+ createdAt: 1
104
+ }, {
105
+ name: "departmentId_1_userId_1_createdAt_1",
106
+ });
107
+
108
+ modelSchema.index({
109
+ "type.type": 1,
110
+ created: 1
111
+ }, {
112
+ name: "type_type_created_1",
113
+ });
114
+
115
+ modelSchema.index({
116
+ uuid: 1,
117
+ }, {
118
+ name: "uuid_1_unique",
119
+ unique: true,
120
+ });
121
+
101
122
  return mongoose.model<Message>("Message", modelSchema, "massive_message", { overwriteModels: true });
102
123
  }
103
124
 
@@ -20,7 +20,6 @@ export default async function MonitorModule(mongoose: MongooseModule) {
20
20
  type: String,
21
21
  default: "",
22
22
  required: true,
23
- index: true,
24
23
  },
25
24
  agencyId: {
26
25
  type: String,
@@ -61,6 +60,23 @@ export default async function MonitorModule(mongoose: MongooseModule) {
61
60
  }
62
61
  });
63
62
 
63
+ // cspell: words deparmtent
64
+ modelSchema.index({
65
+ departmentId: 1,
66
+ notificationType: 1,
67
+ sentAt: -1,
68
+ }, {
69
+ name: "deparmtentId_1_notificationType_1_sentAt_-1",
70
+ });
71
+
72
+ modelSchema.index({
73
+ departmentId: 1,
74
+ notificationType: 1,
75
+ sentUnixDate: -1,
76
+ }, {
77
+ name: "deparmtentId_1_notificationType_1_sentUnixDate_-1",
78
+ });
79
+
64
80
  return mongoose.model<Monitor>("Monitor", modelSchema, "massive_monitor", { overwriteModels: true });
65
81
  }
66
82
 
@@ -114,6 +114,90 @@ export function PersonnelImportSchema(mongoose: MongooseModule) {
114
114
  autoIndex: false,
115
115
  });
116
116
 
117
+ modelSchema.index({
118
+ agencyId: 1,
119
+ modified: -1
120
+ }, {
121
+ name: "agencyId_1_modified_-1",
122
+ });
123
+
124
+ modelSchema.index({
125
+ departmentId: 1,
126
+ active: 1
127
+ }, {
128
+ name: "departmentId_1_active_1",
129
+ });
130
+
131
+ modelSchema.index({
132
+ departmentId: 1,
133
+ active: 1,
134
+ radioNames: 1
135
+ }, {
136
+ name: "departmentId_1_active_1_radioNames_1",
137
+ });
138
+
139
+ modelSchema.index({
140
+ departmentId: 1,
141
+ agencyId: 1,
142
+ active: 1,
143
+ shiftStartTime: 1,
144
+ shiftEndTime: 1
145
+ }, {
146
+ name: "departmentId_1_agencyId_1_active_1_shiftStartTime_1_shiftEndTime_1",
147
+ });
148
+
149
+ modelSchema.index({
150
+ departmentId: 1,
151
+ modified: 1,
152
+ shiftEndTime: 1
153
+ }, {
154
+ name: "departmentId_1_modified_1_shiftEndTime_1",
155
+ });
156
+
157
+ modelSchema.index({
158
+ departmentId: 1,
159
+ radioNames: 1,
160
+ active: 1,
161
+ shiftEndTime: 1,
162
+ shiftStartTime: 1
163
+ }, {
164
+ name: "departmentId_1_radioNames_1_active_1_shiftEndTime_1_shiftStartTime_1",
165
+ });
166
+
167
+ modelSchema.index({
168
+ departmentId: 1,
169
+ "radios.radioName": 1,
170
+ active: 1,
171
+ "radios.active": 1,
172
+ shiftEndTime: 1,
173
+ shiftStartTime: 1
174
+ }, {
175
+ name: "departmentId_1_radios.radioName_1_active_1_radios.active_1_shiftEndTime_1_shiftStartTime_1",
176
+ });
177
+
178
+ modelSchema.index({
179
+ departmentId: 1,
180
+ shiftStartTime: 1,
181
+ PersonnelID: 1
182
+ }, {
183
+ name: "departmentId_1_shiftStartTime_1_PersonnelID_1",
184
+ unique: true,
185
+ });
186
+
187
+ modelSchema.index({
188
+ radios: 1,
189
+ modified: 1
190
+ }, {
191
+ name: "radios_1_modified_1",
192
+ });
193
+
194
+ modelSchema.index({
195
+ modified: 1,
196
+ }, {
197
+ name: "ttl_90d_modified_1",
198
+ expireAfterSeconds: 7786800,
199
+ });
200
+
117
201
  return modelSchema;
118
202
  }
119
203
 
@@ -86,6 +86,15 @@ export function PersonnelKnownSchema(mongoose: MongooseModule) {
86
86
  autoIndex: false,
87
87
  });
88
88
 
89
+ modelSchema.index({
90
+ departmentId: 1,
91
+ PersonnelID: 1,
92
+ active: 1
93
+ }, {
94
+ name: "departmentId_1_PersonnelID_1_active_1",
95
+ unique: true,
96
+ });
97
+
89
98
  return modelSchema;
90
99
  }
91
100
 
@@ -36,6 +36,13 @@ export default async function RateLimitModule(mongoose: MongooseModule) {
36
36
  autoIndex: false,
37
37
  });
38
38
 
39
+ modelSchema.index({
40
+ username: 1,
41
+ modified_unix_date: 1
42
+ }, {
43
+ name: "username_1_modified_unix_date_1",
44
+ });
45
+
39
46
  return mongoose.model<RateLimit>("RateLimit", modelSchema, "massive_rate_limit", { overwriteModels: true });
40
47
  }
41
48
 
@@ -23,7 +23,6 @@ export default async function RemoteLogStreamModule(mongoose: MongooseModule) {
23
23
  type: String,
24
24
  default: "",
25
25
  required: true,
26
- index: true,
27
26
  },
28
27
  userId: {
29
28
  type: String,
@@ -23,7 +23,6 @@ export default async function RemoteLogModule(mongoose: MongooseModule) {
23
23
  type: String,
24
24
  default: "",
25
25
  required: true,
26
- index: true,
27
26
  },
28
27
  userId: {
29
28
  type: String,
@@ -10,7 +10,7 @@ export default function AgencySAMLSchema(mongoose: MongooseModule) {
10
10
  selector: {
11
11
  type: String,
12
12
  required: true,
13
- unique: true,
13
+ // Index set at schema level, to be able to specify name and/or other options
14
14
  },
15
15
  idp: {
16
16
  type: String,
@@ -235,7 +235,6 @@ export function CADIncidentSchema(mongoose: MongooseModule) {
235
235
  type: String,
236
236
  default: "",
237
237
  required: true,
238
- index: true,
239
238
  },
240
239
  AgencyID: {
241
240
  type: String,