tabletcommand-backend-models 7.1.1 → 7.2.1

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 (210) 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 +129 -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/definitions/types/department.d.ts +14 -0
  156. package/definitions/types/department.d.ts.map +1 -1
  157. package/package.json +6 -5
  158. package/src/helpers.ts +4 -0
  159. package/src/index.ts +2 -1
  160. package/src/models/action-log.ts +8 -0
  161. package/src/models/agency.ts +41 -0
  162. package/src/models/arcgis-group.ts +10 -1
  163. package/src/models/assignment.ts +24 -4
  164. package/src/models/battalion.ts +42 -16
  165. package/src/models/beacon-log.ts +6 -1
  166. package/src/models/cad-incident-block.ts +8 -1
  167. package/src/models/cad-incident-stream.ts +31 -1
  168. package/src/models/cad-incident.ts +111 -1
  169. package/src/models/cad-simulation.ts +0 -2
  170. package/src/models/cad-status-map.ts +6 -1
  171. package/src/models/cad-status.ts +13 -2
  172. package/src/models/cad-vehicle-status-history.ts +47 -2
  173. package/src/models/cad-vehicle-status.ts +51 -3
  174. package/src/models/cad-vehicle.ts +35 -2
  175. package/src/models/chart-device-stats.ts +8 -1
  176. package/src/models/chart-incident.ts +14 -1
  177. package/src/models/chart-managed-incident.ts +22 -1
  178. package/src/models/chart-user.ts +14 -1
  179. package/src/models/checklist-item.ts +0 -1
  180. package/src/models/checklist.ts +28 -4
  181. package/src/models/csv-import.ts +7 -0
  182. package/src/models/department.ts +141 -8
  183. package/src/models/device-mapping.ts +19 -0
  184. package/src/models/esri.ts +7 -0
  185. package/src/models/incident-event.ts +45 -6
  186. package/src/models/incident-notified.ts +23 -1
  187. package/src/models/incident-takeover.ts +7 -1
  188. package/src/models/location.ts +133 -8
  189. package/src/models/mail-log.ts +6 -0
  190. package/src/models/managed-incident.ts +75 -4
  191. package/src/models/mark43-incident-retry.ts +0 -1
  192. package/src/models/message.ts +22 -1
  193. package/src/models/monitor.ts +17 -1
  194. package/src/models/personnel-import.ts +84 -0
  195. package/src/models/personnel-known.ts +9 -0
  196. package/src/models/rate-limit.ts +7 -0
  197. package/src/models/remote-log-stream.ts +0 -1
  198. package/src/models/remote-log.ts +0 -1
  199. package/src/models/schema/agency-saml.ts +1 -1
  200. package/src/models/schema/cad-incident.ts +0 -1
  201. package/src/models/session.ts +49 -6
  202. package/src/models/template.ts +17 -7
  203. package/src/models/user-device.ts +20 -0
  204. package/src/models/user-registration.ts +6 -1
  205. package/src/models/user.ts +65 -7
  206. package/src/models/validation-report.ts +7 -1
  207. package/src/test/location.ts +2 -2
  208. package/src/test/mock.ts +7 -2
  209. package/src/types/department.ts +17 -1
  210. package/test.sh +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tabletcommand-backend-models",
3
- "version": "7.1.1",
3
+ "version": "7.2.1",
4
4
  "description": "Tablet Command Backend Models",
5
5
  "scripts": {
6
6
  "build": "gulp build",
@@ -17,7 +17,7 @@
17
17
  "types": "definitions/index.d.ts",
18
18
  "dependencies": {
19
19
  "bluebird": "^3.7.2",
20
- "debug": "^4.3.6",
20
+ "debug": "^4.3.7",
21
21
  "lodash": "^4.17.21",
22
22
  "moment-timezone": "^0.5.45",
23
23
  "mongoose": "^7.7.0",
@@ -26,9 +26,10 @@
26
26
  },
27
27
  "devDependencies": {
28
28
  "@types/bluebird": "^3.5.42",
29
- "@types/chai": "^4.3.16",
29
+ "@types/chai": "^4.3.19",
30
30
  "@types/lodash": "^4.14.202",
31
- "@types/mocha": "^10.0.7",
31
+ "@types/mocha": "^10.0.8",
32
+ "@types/node": "^22.5.5",
32
33
  "@types/uuid": "~10.0.0",
33
34
  "@typescript-eslint/eslint-plugin": "~6.21.0",
34
35
  "@typescript-eslint/parser": "~6.21.0",
@@ -41,7 +42,7 @@
41
42
  "mocha": "^10.7.3",
42
43
  "ts-node": "^10.9.2",
43
44
  "type-coverage": "^2.29.1",
44
- "typescript": "~4.7.4",
45
+ "typescript": "~4.9.5",
45
46
  "yargs-parser": ">=21.1.1"
46
47
  },
47
48
  "typeCoverage": {
package/src/helpers.ts CHANGED
@@ -123,3 +123,7 @@ export async function closeAllMongooseConnections() {
123
123
  }
124
124
  }
125
125
  }
126
+
127
+ export async function sleep(ms: number) {
128
+ return new Promise(resolve => setTimeout(resolve, ms));
129
+ }
package/src/index.ts CHANGED
@@ -131,9 +131,10 @@ export { ValidationReport, ValidationReportModel } from "./models/validation-rep
131
131
 
132
132
  export * from "./helpers";
133
133
 
134
- export async function connect(url: string, overwriteOpts?: ConnectOptions) {
134
+ export async function connect(url: string, overwriteOpts?: ConnectOptions, enableDebug = false) {
135
135
  const mongoose = await import("mongoose");
136
136
  mongoose.Promise = await import("bluebird");
137
+ mongoose.set("debug", enableDebug);
137
138
  const models = await wireModels(mongoose);
138
139
  const defaultOpts: ConnectOptions = {
139
140
  autoIndex: false,
@@ -62,6 +62,14 @@ export default async function ActionLogModule(mongoose: MongooseModule) {
62
62
  }, {
63
63
  autoIndex: false
64
64
  });
65
+
66
+ modelSchema.index({
67
+ departmentId: 1,
68
+ modified_unix_date: 1
69
+ }, {
70
+ name: "departmentId_1_modified_unix_date_1",
71
+ });
72
+
65
73
  return mongoose.model<ActionLog>("ActionLog", modelSchema, "massive_action_log", { overwriteModels: true });
66
74
  }
67
75
 
@@ -129,6 +129,47 @@ export function AgencySchema(mongoose: MongooseModule) {
129
129
  }, {
130
130
  autoIndex: false,
131
131
  });
132
+
133
+ modelSchema.index({
134
+ agencyApiKey: 1,
135
+ }, {
136
+ name: "agencyApiKey_1",
137
+ unique: true,
138
+ });
139
+
140
+ modelSchema.index({
141
+ departmentId: 1,
142
+ }, {
143
+ name: "departmentId_1",
144
+ });
145
+
146
+ modelSchema.index({
147
+ departmentId: 1,
148
+ code: 1,
149
+ }, {
150
+ name: "departmentId_1_code_1_unique",
151
+ unique: true,
152
+ });
153
+
154
+ modelSchema.index({
155
+ personnelApiKey: 1,
156
+ }, {
157
+ name: "personnelApiKey_1_unique",
158
+ unique: true,
159
+ });
160
+
161
+ modelSchema.index({
162
+ "saml.selector": 1,
163
+ }, {
164
+ name: "saml_selector_partial_uniq",
165
+ unique: true,
166
+ partialFilterExpression: {
167
+ "saml.selector": {
168
+ "$exists": true
169
+ }
170
+ }
171
+ });
172
+
132
173
  return modelSchema;
133
174
  }
134
175
 
@@ -108,7 +108,8 @@ export default async function ArcGISGroupModule(mongoose: MongooseModule) {
108
108
  // Unique, to be able to use replaceInto
109
109
  groupId: {
110
110
  type: String,
111
- unique: true,
111
+ // unique: true,
112
+ // TODO: Review if this can be created as unique
112
113
  },
113
114
  title: {
114
115
  type: String,
@@ -177,6 +178,14 @@ export default async function ArcGISGroupModule(mongoose: MongooseModule) {
177
178
  autoIndex: false,
178
179
  });
179
180
 
181
+ modelSchema.index({
182
+ groupId: 1,
183
+ }, {
184
+ name: "groupId_1",
185
+ // unique: true,
186
+ // TODO: Review if this can be created as unique
187
+ });
188
+
180
189
  return mongoose.model<ArcGISGroup>("ArcGISGroup", modelSchema, "massive_arcgis_group", { overwriteModels: true });
181
190
  }
182
191
 
@@ -30,7 +30,6 @@ export default async function AssignmentModule(mongoose: MongooseModule) {
30
30
  departmentId: {
31
31
  type: String,
32
32
  required: true,
33
- index: true,
34
33
  },
35
34
  isMandatory: {
36
35
  type: Boolean,
@@ -68,13 +67,34 @@ export default async function AssignmentModule(mongoose: MongooseModule) {
68
67
  },
69
68
  }, {
70
69
  autoIndex: false,
70
+ toJSON: {
71
+ virtuals: true,
72
+ versionKey: false,
73
+ }
71
74
  });
72
75
  modelSchema.virtual("id").get(function(this: AssignmentType) {
73
76
  return this._id.toString();
74
77
  });
75
- modelSchema.set("toJSON", {
76
- virtuals: true,
77
- versionKey: false,
78
+
79
+ modelSchema.index({
80
+ departmentId: 1,
81
+ isMandatory: 1,
82
+ }, {
83
+ name: "departmentId_1_isMandatory_1",
84
+ });
85
+
86
+ modelSchema.index({
87
+ departmentId: 1,
88
+ modified_date: 1,
89
+ }, {
90
+ name: "departmentId_1_modified_date_1",
91
+ });
92
+
93
+ modelSchema.index({
94
+ departmentId: 1,
95
+ userId: 1,
96
+ }, {
97
+ name: "departmentId_1_userId_1",
78
98
  });
79
99
 
80
100
  return mongoose.model<Assignment>("Assignment", modelSchema, "massive_assignment", { overwriteModels: true });
@@ -73,20 +73,21 @@ export function BattalionSchema(mongoose: MongooseModule) {
73
73
  ref: "Agency",
74
74
  default: null,
75
75
  },
76
- }, {});
76
+ }, {
77
+ autoIndex: false,
78
+ toJSON: {
79
+ virtuals: true,
80
+ versionKey: false,
81
+ transform(doc, ret) {
82
+ strictSchema(doc.schema as typeof modelSchema, ret);
83
+ },
84
+ }
85
+ });
77
86
 
78
87
  BattalionUnit.virtual("id").get(function(this: MongooseDocument) {
79
88
  // tslint:disable-next-line: no-unsafe-any
80
89
  return this._id.toString();
81
90
  });
82
- BattalionUnit.set("toJSON", {
83
- virtuals: true,
84
- versionKey: false,
85
- transform(doc, ret) {
86
- strictSchema(doc.schema as typeof modelSchema, ret);
87
- },
88
- });
89
-
90
91
 
91
92
  const modelSchema = new Schema<BattalionType>({
92
93
  _id: {
@@ -127,7 +128,6 @@ export function BattalionSchema(mongoose: MongooseModule) {
127
128
  departmentId: {
128
129
  type: String,
129
130
  required: true,
130
- index: true,
131
131
  },
132
132
  agencyId: {
133
133
  type: Schema.Types.ObjectId,
@@ -144,19 +144,45 @@ export function BattalionSchema(mongoose: MongooseModule) {
144
144
  },
145
145
  }, {
146
146
  autoIndex: false,
147
+ toJSON: {
148
+ virtuals: true,
149
+ versionKey: false,
150
+ transform(doc, ret) {
151
+ strictSchema(doc.schema as typeof modelSchema, ret);
152
+ },
153
+ }
147
154
  });
148
155
  modelSchema.virtual("id").get(function(this: MongooseDocument) {
149
156
  // tslint:disable-next-line: no-unsafe-any
150
157
  return this._id.toString();
151
158
  });
152
- modelSchema.set("toJSON", {
153
- virtuals: true,
154
- versionKey: false,
155
- transform(doc, ret) {
156
- strictSchema(doc.schema as typeof modelSchema, ret);
157
- },
159
+
160
+ modelSchema.index({
161
+ departmentId: 1,
162
+ isMandatory: 1,
163
+ }, {
164
+ name: "departmentId_1_isMandatory_1",
158
165
  });
159
166
 
167
+ modelSchema.index({
168
+ departmentId: 1,
169
+ modified_date: 1,
170
+ }, {
171
+ name: "departmentId_1_modified_date_1",
172
+ });
173
+
174
+ modelSchema.index({
175
+ departmentId: 1,
176
+ userId: 1,
177
+ }, {
178
+ name: "departmentId_1_userId_1",
179
+ });
180
+
181
+ modelSchema.index({
182
+ uuid: 1,
183
+ }, {
184
+ name: "uuid_1",
185
+ });
160
186
 
161
187
  function strictSchema(schema: typeof modelSchema, ret: Record<string, unknown>) {
162
188
  Object.keys(ret).forEach(function(element) {
@@ -19,7 +19,6 @@ export default async function BeaconLogModule(mongoose: MongooseModule) {
19
19
  departmentId: {
20
20
  type: String,
21
21
  default: "",
22
- index: true,
23
22
  },
24
23
  userId: {
25
24
  type: String,
@@ -40,6 +39,12 @@ export default async function BeaconLogModule(mongoose: MongooseModule) {
40
39
  autoIndex: false,
41
40
  });
42
41
 
42
+ modelSchema.index({
43
+ departmentId: 1,
44
+ }, {
45
+ name: "departmentId_1",
46
+ });
47
+
43
48
  return mongoose.model<BeaconLog>("BeaconLog", modelSchema, "massive_beacon_log", { overwriteModels: true });
44
49
  }
45
50
 
@@ -23,7 +23,6 @@ export default async function CADIncidentBlockModule(mongoose: MongooseModule) {
23
23
  departmentId: {
24
24
  type: String,
25
25
  required: true,
26
- index: true,
27
26
  },
28
27
  // callType or admin email
29
28
  source: {
@@ -59,6 +58,14 @@ export default async function CADIncidentBlockModule(mongoose: MongooseModule) {
59
58
  }
60
59
  });
61
60
 
61
+ modelSchema.index({
62
+ departmentId: 1,
63
+ IncidentNumber: 1,
64
+ }, {
65
+ name: "departmentId_1_IncidentNumber_1_unique",
66
+ unique: true,
67
+ });
68
+
62
69
  return mongoose.model<CADIncidentBlock>("CADIncidentBlock", modelSchema, "massive_cad_incident_block", { overwriteModels: true });
63
70
  }
64
71
 
@@ -32,7 +32,6 @@ export default async function CADIncidentStreamModule(mongoose: MongooseModule)
32
32
  type: String,
33
33
  default: "",
34
34
  required: true,
35
- index: true,
36
35
  },
37
36
  incidentNumber: {
38
37
  type: String,
@@ -54,6 +53,37 @@ export default async function CADIncidentStreamModule(mongoose: MongooseModule)
54
53
  }
55
54
  });
56
55
 
56
+ modelSchema.index({
57
+ departmentId: 1,
58
+ incidentNumber: 1,
59
+ createdAt: -1,
60
+ _id: -1
61
+ }, {
62
+ name: "departmentId_1_incidentNumber_1_createdAt_-1__id_-1",
63
+ });
64
+
65
+ modelSchema.index({
66
+ departmentId: 1,
67
+ createdAt: -1
68
+ }, {
69
+ name: "departmentId_createdAt",
70
+ });
71
+
72
+ modelSchema.index({
73
+ departmentId: 1,
74
+ incidentNumber: 1,
75
+ createdAt: 1
76
+ }, {
77
+ name: "departmentId_incidentNumber_createdAt",
78
+ });
79
+
80
+ modelSchema.index({
81
+ createdAt: -1,
82
+ }, {
83
+ name: "ttl_90d_createdAt_-1",
84
+ expireAfterSeconds: 7786800,
85
+ });
86
+
57
87
  return mongoose.model<CADIncidentStream>("CADIncidentStream", modelSchema, "massive_cad_incident_stream", { overwriteModels: true });
58
88
  }
59
89
 
@@ -12,7 +12,36 @@ export default async function CADIncidentModule(mongoose: MongooseModule) {
12
12
  const modelSchema = CADIncidentSchema(mongoose);
13
13
  modelSchema.set("strict", false); // Because we accept all kind of data in
14
14
 
15
- // Indexes
15
+ modelSchema.index({
16
+ closed_unix_date: 1,
17
+ departmentId: 1,
18
+ modified_unix_date: 1
19
+ }, {
20
+ name: "closed_unix_date_1_departmentId_1_modified_unix_date_1",
21
+ });
22
+
23
+ modelSchema.index({
24
+ closed_unix_date: 1,
25
+ modified_unix_date: 1
26
+ }, {
27
+ name: "closed_unix_date_modified_unix_date",
28
+ });
29
+
30
+ modelSchema.index({
31
+ departmentId: 1,
32
+ ClosedDateTime: -1
33
+ }, {
34
+ name: "departmentId_1_ClosedDateTime_-1",
35
+ });
36
+
37
+ modelSchema.index({
38
+ departmentId: 1,
39
+ ClosedDateTime: 1,
40
+ expiration_date: 1
41
+ }, {
42
+ name: "departmentId_1_ClosedDateTime_1_expiration_date_1",
43
+ });
44
+
16
45
  modelSchema.index({
17
46
  departmentId: 1,
18
47
  IncidentNumber: 1
@@ -21,6 +50,87 @@ export default async function CADIncidentModule(mongoose: MongooseModule) {
21
50
  unique: true,
22
51
  });
23
52
 
53
+ modelSchema.index({
54
+ departmentId: 1,
55
+ closed_unix_date: 1,
56
+ modified_unix_date: 1
57
+ }, {
58
+ name: "departmentId_1_closed_unix_date_1_modified_unix_date_1",
59
+ });
60
+
61
+ modelSchema.index({
62
+ departmentId: 1,
63
+ modified_unix_date: 1
64
+ }, {
65
+ name: "departmentId_1_modified_unix_date_1",
66
+ });
67
+
68
+ modelSchema.index({
69
+ departmentId: 1,
70
+ start_unix_date: -1,
71
+ closed_unix_date: 1
72
+ }, {
73
+ name: "departmentId_1_start_unix_date_-1_closed_unix_date_1",
74
+ });
75
+
76
+ modelSchema.index({
77
+ departmentId: 1,
78
+ start_unix_date: 1
79
+ }, {
80
+ name: "departmentId_1_start_unix_date_1",
81
+ });
82
+
83
+ modelSchema.index({
84
+ expiration_date: 1,
85
+ ClosedDateTime: 1
86
+ }, {
87
+ name: "expiration_date_1_ClosedDateTime_1",
88
+ partialFilterExpression: {
89
+ expiration_date: {
90
+ "$gt": ""
91
+ },
92
+ ClosedDateTime: {
93
+ "$eq": ""
94
+ }
95
+ },
96
+ });
97
+
98
+ modelSchema.index({
99
+ expiration_date: 1,
100
+ ClosedDateTime: 1,
101
+ departmentId: 1
102
+ }, {
103
+ name: "expiration_date_1_ClosedDateTime_1_departmentId_1",
104
+ partialFilterExpression: {
105
+ expiration_date: {
106
+ "$gt": ""
107
+ },
108
+ ClosedDateTime: ""
109
+ }
110
+ });
111
+
112
+ modelSchema.index({
113
+ "sharedTo.departmentId": 1,
114
+ start_unix_date: -1,
115
+ closed_unix_date: 1
116
+ }, {
117
+ name: "sharedTo.departmentId_1_start_unix_date_-1_closed_unix_date_1",
118
+ });
119
+
120
+ modelSchema.index({
121
+ "sharedTo.departmentId": 1,
122
+ "sharedTo.expireAt": 1
123
+ }, {
124
+ name: "sharedTo_departmentId_1_sharedTo_expireAt_1",
125
+ });
126
+
127
+ modelSchema.index({
128
+ uuid: 1,
129
+ }, {
130
+ name: "uuid_1",
131
+ unique: true,
132
+ });
133
+
24
134
  return mongoose.model<CADIncident>("CADIncident", modelSchema, "massive_incident_cad", { overwriteModels: true });
25
135
  }
26
136
 
@@ -132,14 +132,12 @@ export default async function CADSimulationModule(mongoose: MongooseModule) {
132
132
  // Internal
133
133
  uuid: {
134
134
  type: String,
135
- index: true,
136
135
  default: uuid.v4,
137
136
  },
138
137
  departmentId: {
139
138
  type: String,
140
139
  default: "",
141
140
  required: true,
142
- index: true,
143
141
  },
144
142
  modifiedDate: {
145
143
  type: Number,
@@ -35,7 +35,6 @@ export default async function CADStatusMapModule(mongoose: MongooseModule) {
35
35
  type: String,
36
36
  default: "",
37
37
  required: true,
38
- index: true,
39
38
  },
40
39
  modifiedDate: {
41
40
  type: Number,
@@ -63,6 +62,12 @@ export default async function CADStatusMapModule(mongoose: MongooseModule) {
63
62
  autoIndex: false,
64
63
  });
65
64
 
65
+ modelSchema.index({
66
+ departmentId: 1
67
+ }, {
68
+ name: "departmentId_1",
69
+ });
70
+
66
71
  return mongoose.model<CADStatusMap>("CADStatusMap", modelSchema, "massive_cad_status_map", { overwriteModels: true });
67
72
  }
68
73
 
@@ -89,14 +89,12 @@ export default async function CADStatusModule(mongoose: MongooseModule) {
89
89
  const modelSchema = new Schema<CADStatus>({
90
90
  uuid: {
91
91
  type: String,
92
- index: true,
93
92
  default: uuid.v4,
94
93
  },
95
94
  departmentId: {
96
95
  type: String,
97
96
  default: "",
98
97
  required: true,
99
- index: true,
100
98
  },
101
99
  modifiedDate: {
102
100
  type: Number,
@@ -160,6 +158,19 @@ export default async function CADStatusModule(mongoose: MongooseModule) {
160
158
  autoIndex: false,
161
159
  });
162
160
 
161
+ modelSchema.index({
162
+ departmentId: 1
163
+ }, {
164
+ name: "departmentId_1",
165
+ });
166
+
167
+ modelSchema.index({
168
+ uuid: 1
169
+ }, {
170
+ name: "uuid_1_unique",
171
+ unique: true,
172
+ });
173
+
163
174
  return mongoose.model<CADStatus>("CADStatus", modelSchema, "massive_cad_status", { overwriteModels: true });
164
175
  }
165
176
 
@@ -17,12 +17,10 @@ export default async function CADVehicleStatusHistoryModule(mongoose: MongooseMo
17
17
  type: String,
18
18
  default: "",
19
19
  required: true,
20
- index: true,
21
20
  },
22
21
  vehicleId: {
23
22
  type: String,
24
23
  default: "",
25
- index: true,
26
24
  },
27
25
  radioName: {
28
26
  type: String,
@@ -78,6 +76,53 @@ export default async function CADVehicleStatusHistoryModule(mongoose: MongooseMo
78
76
  autoIndex: false,
79
77
  });
80
78
 
79
+ modelSchema.index({
80
+ departmentId: 1,
81
+ incidentNumber: 1,
82
+ requested: -1
83
+ }, {
84
+ name: "departmentId_1_incidentNumber_1_requested__1",
85
+ });
86
+
87
+ modelSchema.index({
88
+ departmentId: 1,
89
+ requestedAt: -1,
90
+ requestDelay: 1
91
+ }, {
92
+ name: "departmentId_1_requestedAt_-1_requestDelay_1",
93
+ });
94
+
95
+ modelSchema.index({
96
+ departmentId: 1,
97
+ requested: -1,
98
+ requestDelay: 1
99
+ }, {
100
+ name: "departmentId_1_requested_-1_requestDelay_1",
101
+ });
102
+
103
+ modelSchema.index({
104
+ departmentId: 1,
105
+ vehicleId: 1,
106
+ requestedAt: -1
107
+ }, {
108
+ name: "departmentId_1_vehicleId_1_requestedAt_-1",
109
+ });
110
+
111
+ modelSchema.index({
112
+ departmentId: 1,
113
+ vehicleId: 1,
114
+ requested: -1,
115
+ }, {
116
+ name: "departmentId_1_vehicleId_1_requested_-1",
117
+ });
118
+
119
+ modelSchema.index({
120
+ requested: 1,
121
+ }, {
122
+ name: "ttl_30d_requested_1",
123
+ expireAfterSeconds: 2654300,
124
+ });
125
+
81
126
  return mongoose.model<CADVehicleStatusHistory>("CADVehicleStatusHistory", modelSchema, "massive_cad_vehicle_status_history", { overwriteModels: true });
82
127
  }
83
128