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
@@ -34,18 +34,15 @@ export default async function CADVehicleStatusModule(mongoose: MongooseModule) {
34
34
  id: false,
35
35
  });
36
36
 
37
-
38
37
  const modelSchema = new Schema<CADVehicleStatusType>({
39
38
  uuid: {
40
39
  type: String,
41
- index: true,
42
40
  default: uuid.v4,
43
41
  },
44
42
  departmentId: {
45
43
  type: String,
46
44
  default: "",
47
45
  required: true,
48
- index: true,
49
46
  },
50
47
  vehicleId: {
51
48
  type: String,
@@ -142,6 +139,57 @@ export default async function CADVehicleStatusModule(mongoose: MongooseModule) {
142
139
  autoIndex: false,
143
140
  });
144
141
 
142
+ modelSchema.index({
143
+ departmentId: 1,
144
+ }, {
145
+ name: "departmentId_1",
146
+ });
147
+
148
+ modelSchema.index({
149
+ departmentId: 1,
150
+ modified_unix_date: 1,
151
+ }, {
152
+ name: "departmentId_1_modified_unix_date_1",
153
+ });
154
+
155
+ modelSchema.index({
156
+ departmentId: 1,
157
+ owner: 1,
158
+ modifiedDate: 1
159
+ }, {
160
+ name: "departmentId_1_owner_1_modifiedDate_1",
161
+ });
162
+
163
+ modelSchema.index({
164
+ departmentId: 1,
165
+ owner: 1,
166
+ modified: -1
167
+ }, {
168
+ name: "departmentId_1_owner_1_modified_-1",
169
+ });
170
+
171
+ modelSchema.index({
172
+ departmentId: 1,
173
+ radioName: 1
174
+ }, {
175
+ name: "departmentId_1_radioName_1",
176
+ });
177
+
178
+ modelSchema.index({
179
+ departmentId: 1,
180
+ vehicleId: 1
181
+ }, {
182
+ name: "departmentId_1_vehicleId_1_unique",
183
+ unique: true,
184
+ });
185
+
186
+ modelSchema.index({
187
+ uuid: 1,
188
+ }, {
189
+ name: "uuid_1_unique",
190
+ unique: true,
191
+ });
192
+
145
193
  return mongoose.model<CADVehicleStatus>("CADVehicleStatus", modelSchema, "massive_cad_vehicle_status", { overwriteModels: true });
146
194
  }
147
195
 
@@ -29,14 +29,12 @@ export default async function CADVehicleModule(mongoose: MongooseModule) {
29
29
  // Internal
30
30
  uuid: {
31
31
  type: String,
32
- index: true,
33
32
  default: uuid.v4,
34
33
  },
35
34
  departmentId: {
36
35
  type: String,
37
36
  default: "",
38
37
  required: true,
39
- index: true,
40
38
  },
41
39
  modifiedDate: {
42
40
  type: Number,
@@ -86,6 +84,41 @@ export default async function CADVehicleModule(mongoose: MongooseModule) {
86
84
  autoIndex: false,
87
85
  });
88
86
 
87
+ modelSchema.index({
88
+ departmentId: 1,
89
+ modifiedDate: 1
90
+ }, {
91
+ name: "departmentId_1_modifiedDate_1",
92
+ });
93
+
94
+ modelSchema.index({
95
+ departmentId: 1,
96
+ modified: 1
97
+ }, {
98
+ name: "departmentId_1_modified_1",
99
+ });
100
+
101
+ modelSchema.index({
102
+ departmentId: 1,
103
+ radioName: 1
104
+ }, {
105
+ name: "departmentId_1_radioName_1",
106
+ });
107
+
108
+ modelSchema.index({
109
+ departmentId: 1,
110
+ vehicleId: 1
111
+ }, {
112
+ name: "departmentId_1_vehicleId_1",
113
+ });
114
+
115
+ modelSchema.index({
116
+ uuid: 1,
117
+ }, {
118
+ name: "uuid_1_unique",
119
+ unique: true,
120
+ });
121
+
89
122
  return mongoose.model<CADVehicle>("CADVehicle", modelSchema, "massive_cad_vehicle", { overwriteModels: true });
90
123
  }
91
124
 
@@ -62,7 +62,6 @@ export default async function ChartDeviceStatsModule(mongoose: MongooseModule) {
62
62
  type: String,
63
63
  default: "",
64
64
  required: true,
65
- index: true,
66
65
  },
67
66
  items: {
68
67
  type: [ChartItem],
@@ -75,6 +74,14 @@ export default async function ChartDeviceStatsModule(mongoose: MongooseModule) {
75
74
  }
76
75
  });
77
76
 
77
+ modelSchema.index({
78
+ dateAt: 1,
79
+ "items.email": 1,
80
+ departmentId: 1
81
+ }, {
82
+ name: "dateAt_1_items_email_1_departmentId_1",
83
+ });
84
+
78
85
  return mongoose.model<ChartDeviceStats>("ChartDeviceStat", modelSchema, "massive_chart_device_stat", { overwriteModels: true });
79
86
  }
80
87
 
@@ -38,7 +38,6 @@ export default async function ChartIncidentModule(mongoose: MongooseModule) {
38
38
  type: String,
39
39
  default: "",
40
40
  required: true,
41
- index: true,
42
41
  },
43
42
  count: {
44
43
  type: Number,
@@ -55,6 +54,20 @@ export default async function ChartIncidentModule(mongoose: MongooseModule) {
55
54
  }
56
55
  });
57
56
 
57
+ modelSchema.index({
58
+ departmentId: 1,
59
+ date: 1,
60
+ }, {
61
+ name: "departmentId1_date_1",
62
+ });
63
+
64
+ modelSchema.index({
65
+ departmentId: 1,
66
+ dateAt: -1
67
+ }, {
68
+ name: "departmentId_1_dateAt_-1",
69
+ });
70
+
58
71
  return mongoose.model<ChartIncident>("ChartIncident", modelSchema, "massive_chart_incident", { overwriteModels: true });
59
72
  }
60
73
 
@@ -39,7 +39,6 @@ export default async function ChartManagedIncidentModule(mongoose: MongooseModul
39
39
  type: String,
40
40
  default: "",
41
41
  required: true,
42
- index: true,
43
42
  },
44
43
  userId: {
45
44
  type: String,
@@ -61,6 +60,28 @@ export default async function ChartManagedIncidentModule(mongoose: MongooseModul
61
60
  }
62
61
  });
63
62
 
63
+ modelSchema.index({
64
+ departmentId: 1,
65
+ dateAt: -1
66
+ }, {
67
+ name: "departmentId_1_dateAt_-1",
68
+ });
69
+
70
+ modelSchema.index({
71
+ departmentId: 1,
72
+ date: 1,
73
+ }, {
74
+ name: "departmentId_1_date_1",
75
+ });
76
+
77
+ modelSchema.index({
78
+ departmentId: 1,
79
+ userId: 1,
80
+ dateAt: -1
81
+ }, {
82
+ name: "departmentId_1_userId_1_dateAt_-1",
83
+ });
84
+
64
85
  return mongoose.model<ChartManagedIncident>("ChartManagedIncident", modelSchema, "massive_chart_managed_incident", { overwriteModels: true });
65
86
  }
66
87
 
@@ -24,7 +24,6 @@ export default async function ChartUserModule(mongoose: MongooseModule) {
24
24
  type: String,
25
25
  default: "",
26
26
  required: true,
27
- index: true,
28
27
  },
29
28
  count: {
30
29
  type: Number,
@@ -41,6 +40,20 @@ export default async function ChartUserModule(mongoose: MongooseModule) {
41
40
  }
42
41
  });
43
42
 
43
+ modelSchema.index({
44
+ departmentId: 1,
45
+ dateAt: -1,
46
+ }, {
47
+ name: "departmentId_1_dateAt_-1",
48
+ });
49
+
50
+ modelSchema.index({
51
+ departmentId: 1,
52
+ date: 1,
53
+ }, {
54
+ name: "departmentId_1_date_1",
55
+ });
56
+
44
57
  return mongoose.model<ChartUser>("ChartUser", modelSchema, "massive_chart_user", { overwriteModels: true });
45
58
  }
46
59
 
@@ -47,7 +47,6 @@ export function ChecklistItemSchema(mongoose: MongooseModule) {
47
47
  departmentId: {
48
48
  type: String,
49
49
  required: true,
50
- index: true,
51
50
  },
52
51
  active: {
53
52
  type: Boolean,
@@ -53,7 +53,6 @@ export function ChecklistSchema(mongoose: MongooseModule) {
53
53
  departmentId: {
54
54
  type: String,
55
55
  required: true,
56
- index: true,
57
56
  },
58
57
  active: {
59
58
  type: Boolean,
@@ -74,17 +73,42 @@ export function ChecklistSchema(mongoose: MongooseModule) {
74
73
  }
75
74
  }, {
76
75
  autoIndex: false,
76
+ toJSON: {
77
+ virtuals: true,
78
+ versionKey: false,
79
+ }
77
80
  });
78
81
  modelSchema.virtual("id").get(function(this: MongooseDocument) {
79
82
  // tslint:disable-next-line: no-unsafe-any
80
83
  return this._id.toString();
81
84
  });
82
85
 
83
- modelSchema.set("toJSON", {
84
- virtuals: true,
85
- versionKey: false,
86
+ modelSchema.index({
87
+ departmentId: 1,
88
+ isMandatory: 1
89
+ }, {
90
+ name: "departmentId_1_isMandatory_1",
91
+ });
92
+
93
+ modelSchema.index({
94
+ departmentId: 1,
95
+ modified_date: 1,
96
+ }, {
97
+ name: "departmentId_1_modified_date_1",
98
+ });
99
+
100
+ modelSchema.index({
101
+ departmentId: 1,
102
+ userId: 1
103
+ }, {
104
+ name: "deptId_1_userId_1",
86
105
  });
87
106
 
107
+ modelSchema.index({
108
+ uuid: 1,
109
+ }, {
110
+ name: "uuid_1",
111
+ });
88
112
 
89
113
  return modelSchema;
90
114
  }
@@ -71,6 +71,13 @@ export default async function CSVImportModule(mongoose: MongooseModule) {
71
71
  autoIndex: false,
72
72
  });
73
73
 
74
+ modelSchema.index({
75
+ batchId: 1,
76
+ }, {
77
+ name: "batchId_1",
78
+ unique: true,
79
+ });
80
+
74
81
  return mongoose.model<CSVImport>("CSVImport", modelSchema, "massive_csv_import", { overwriteModels: true });
75
82
  }
76
83
 
@@ -21,6 +21,8 @@ import {
21
21
  ForwardFieldsType,
22
22
  ForwardingConfigType,
23
23
  ForwardingConnectionType,
24
+ VehicleStatusWebhookConnectionType,
25
+ VehicleStatusWebhookConfigType,
24
26
  GSTConfigType,
25
27
  IncidentReplayType,
26
28
  IncidentTypeType,
@@ -194,6 +196,11 @@ const ForwardingConfigDefault = {
194
196
  "connections": [],
195
197
  };
196
198
 
199
+ const VehicleStatusWebhookConfigDefault = {
200
+ "enabled": false,
201
+ "connections": [],
202
+ };
203
+
197
204
  const IncidentReplayDefault = {
198
205
  "enabled": false,
199
206
  "replays": [],
@@ -335,6 +342,51 @@ const ForwardFieldsDefault = [
335
342
  }
336
343
  ];
337
344
 
345
+ const VehicleStatusWebhookFieldsDefault = [
346
+ {
347
+ "key": "responseTime",
348
+ "value": "responseTime",
349
+ "required": true,
350
+ "enabled": true,
351
+ "transformationRequired": false,
352
+ },
353
+ {
354
+ "key": "responseTimeAt",
355
+ "value": "responseTimeAt",
356
+ "required": true,
357
+ "enabled": true,
358
+ "transformationRequired": false,
359
+ },
360
+ {
361
+ "key": "radioName",
362
+ "value": "radioName",
363
+ "required": true,
364
+ "enabled": true,
365
+ "transformationRequired": false,
366
+ },
367
+ {
368
+ "key": "vehicleId",
369
+ "value": "vehicleId",
370
+ "required": true,
371
+ "enabled": true,
372
+ "transformationRequired": false,
373
+ },
374
+ {
375
+ "key": "statusCode",
376
+ "value": "statusCode",
377
+ "required": true,
378
+ "enabled": true,
379
+ "transformationRequired": false,
380
+ },
381
+ {
382
+ "key": "status",
383
+ "value": "status",
384
+ "required": true,
385
+ "enabled": true,
386
+ "transformationRequired": false,
387
+ }
388
+ ];
389
+
338
390
  const SamsaraConfigurationDefault = {
339
391
  enabled: false,
340
392
  token: "",
@@ -617,6 +669,40 @@ export default async function DepartmentModule(mongoose: MongooseModule) {
617
669
  id: false,
618
670
  });
619
671
 
672
+ const VehicleStatusWebhookConnection = new Schema<VehicleStatusWebhookConnectionType>({
673
+ active: {
674
+ type: Boolean,
675
+ default: false,
676
+ },
677
+ connectionType: {
678
+ type: String,
679
+ default: "",
680
+ },
681
+ fields: {
682
+ type: [ForwardFields],
683
+ default: VehicleStatusWebhookFieldsDefault,
684
+ },
685
+ apiUrl: {
686
+ type: String,
687
+ default: "",
688
+ },
689
+ apiKey: {
690
+ type: String,
691
+ default: "",
692
+ },
693
+ authType: {
694
+ type: String,
695
+ default: "",
696
+ },
697
+ description: {
698
+ type: String,
699
+ default: "",
700
+ },
701
+ }, {
702
+ _id: false,
703
+ id: false,
704
+ });
705
+
620
706
  const IntterraConfig = new Schema<IntterraConfigType>({
621
707
  enabled: {
622
708
  type: Boolean,
@@ -650,6 +736,21 @@ export default async function DepartmentModule(mongoose: MongooseModule) {
650
736
  id: false,
651
737
  });
652
738
 
739
+ const VehicleStatusWebhookConfig = new Schema<VehicleStatusWebhookConfigType>({
740
+ enabled: {
741
+ type: Boolean,
742
+ default: false,
743
+ },
744
+ connections: {
745
+ type: [VehicleStatusWebhookConnection],
746
+ default: [],
747
+ },
748
+ }, {
749
+ _id: false,
750
+ id: false,
751
+ });
752
+
753
+
653
754
  const SkymiraConfig = new Schema<SkymiraConfigType>({
654
755
  enabled: {
655
756
  type: Boolean,
@@ -1639,20 +1740,52 @@ export default async function DepartmentModule(mongoose: MongooseModule) {
1639
1740
  type: ForwardingConfig,
1640
1741
  default: ForwardingConfigDefault,
1641
1742
  },
1743
+ vehicleStatusWebhook: {
1744
+ type: VehicleStatusWebhookConfig,
1745
+ default: VehicleStatusWebhookConfigDefault,
1746
+ },
1642
1747
  }, {
1643
- "autoIndex": false,
1644
- "timestamps": {
1748
+ autoIndex: false,
1749
+ timestamps: {
1645
1750
  updatedAt: "modified",
1751
+ },
1752
+ toJSON: {
1753
+ virtuals: true,
1754
+ versionKey: false,
1646
1755
  }
1647
1756
  });
1648
1757
 
1649
- modelSchema.virtual("id").get(function(this: Department) {
1650
- return this._id.toHexString();
1758
+ modelSchema.index({
1759
+ apikey: 1,
1760
+ }, {
1761
+ name: "apikey_1",
1762
+ unique: true,
1763
+ });
1764
+
1765
+ modelSchema.index({
1766
+ department: 1,
1767
+ }, {
1768
+ name: "department_1_unique",
1769
+ unique: true,
1651
1770
  });
1652
1771
 
1653
- modelSchema.set("toJSON", {
1654
- virtuals: true,
1655
- versionKey: false,
1772
+ modelSchema.index({
1773
+ rtsChannelPrefix: 1,
1774
+ }, {
1775
+ name: "rtsChannelPrefix_1_unique",
1776
+ unique: true,
1777
+ });
1778
+
1779
+ // TODO: Create this
1780
+ // modelSchema.index({
1781
+ // uuid: 1,
1782
+ // }, {
1783
+ // name: "uuid_1_unique",
1784
+ // unique: true,
1785
+ // });
1786
+
1787
+ modelSchema.virtual("id").get(function(this: Department) {
1788
+ return this._id.toHexString();
1656
1789
  });
1657
1790
 
1658
1791
  modelSchema.plugin(mongooseLeanVirtuals);
@@ -1660,4 +1793,4 @@ export default async function DepartmentModule(mongoose: MongooseModule) {
1660
1793
  return mongoose.model<Department>("Department", modelSchema, "massive_admin", { overwriteModels: true });
1661
1794
  }
1662
1795
 
1663
- export interface DepartmentModel extends Model<Department> { }
1796
+ export interface DepartmentModel extends Model<Department> { }
@@ -80,6 +80,25 @@ export default async function DeviceMappingModule(mongoose: MongooseModule) {
80
80
  autoIndex: false,
81
81
  });
82
82
 
83
+ modelSchema.index({
84
+ departmentId: 1,
85
+ modified_unix_date: 1
86
+ }, {
87
+ name: "departmentId_1_modified_unix_date_1",
88
+ });
89
+
90
+ modelSchema.index({
91
+ deviceId: 1,
92
+ }, {
93
+ name: "deviceId_1",
94
+ });
95
+
96
+ modelSchema.index({
97
+ remoteAddress: 1,
98
+ }, {
99
+ name: "remoteAddress_1",
100
+ });
101
+
83
102
  return mongoose.model<DeviceMapping>("DeviceMapping", modelSchema, "massive_device_mapping", { overwriteModels: true });
84
103
  }
85
104
 
@@ -114,6 +114,13 @@ export function EsriSchema(mongoose: MongooseModule) {
114
114
  }
115
115
  });
116
116
 
117
+ modelSchema.index({
118
+ departmentId: 1,
119
+ }, {
120
+ name: "departmentId_unique",
121
+ unique: true,
122
+ });
123
+
117
124
  return modelSchema;
118
125
  }
119
126
 
@@ -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