tabletcommand-backend-models 7.1.0 → 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 (212) hide show
  1. package/build/constants.js +1 -1
  2. package/build/constants.js.map +1 -1
  3. package/build/helpers.js +5 -1
  4. package/build/helpers.js.map +1 -1
  5. package/build/index.js +2 -1
  6. package/build/index.js.map +1 -1
  7. package/build/models/action-log.js +6 -0
  8. package/build/models/action-log.js.map +1 -1
  9. package/build/models/agency.js +35 -0
  10. package/build/models/agency.js.map +1 -1
  11. package/build/models/arcgis-group.js +9 -1
  12. package/build/models/arcgis-group.js.map +1 -1
  13. package/build/models/assignment.js +21 -4
  14. package/build/models/assignment.js.map +1 -1
  15. package/build/models/battalion.js +39 -15
  16. package/build/models/battalion.js.map +1 -1
  17. package/build/models/beacon-log.js +5 -1
  18. package/build/models/beacon-log.js.map +1 -1
  19. package/build/models/cad-incident-block.js +7 -1
  20. package/build/models/cad-incident-block.js.map +1 -1
  21. package/build/models/cad-incident-stream.js +27 -1
  22. package/build/models/cad-incident-stream.js.map +1 -1
  23. package/build/models/cad-incident.js +98 -1
  24. package/build/models/cad-incident.js.map +1 -1
  25. package/build/models/cad-simulation.js +0 -2
  26. package/build/models/cad-simulation.js.map +1 -1
  27. package/build/models/cad-status-map.js +5 -1
  28. package/build/models/cad-status-map.js.map +1 -1
  29. package/build/models/cad-status.js +11 -2
  30. package/build/models/cad-status.js.map +1 -1
  31. package/build/models/cad-vehicle-status-history.js +41 -2
  32. package/build/models/cad-vehicle-status-history.js.map +1 -1
  33. package/build/models/cad-vehicle-status.js +44 -2
  34. package/build/models/cad-vehicle-status.js.map +1 -1
  35. package/build/models/cad-vehicle.js +30 -2
  36. package/build/models/cad-vehicle.js.map +1 -1
  37. package/build/models/chart-device-stats.js +7 -1
  38. package/build/models/chart-device-stats.js.map +1 -1
  39. package/build/models/chart-incident.js +12 -1
  40. package/build/models/chart-incident.js.map +1 -1
  41. package/build/models/chart-managed-incident.js +19 -1
  42. package/build/models/chart-managed-incident.js.map +1 -1
  43. package/build/models/chart-user.js +12 -1
  44. package/build/models/chart-user.js.map +1 -1
  45. package/build/models/checklist-item.js +0 -1
  46. package/build/models/checklist-item.js.map +1 -1
  47. package/build/models/checklist.js +26 -4
  48. package/build/models/checklist.js.map +1 -1
  49. package/build/models/csv-import.js +6 -0
  50. package/build/models/csv-import.js.map +1 -1
  51. package/build/models/department.js +31 -6
  52. package/build/models/department.js.map +1 -1
  53. package/build/models/device-mapping.js +16 -0
  54. package/build/models/device-mapping.js.map +1 -1
  55. package/build/models/esri.js +6 -0
  56. package/build/models/esri.js.map +1 -1
  57. package/build/models/incident-event.js +38 -6
  58. package/build/models/incident-event.js.map +1 -1
  59. package/build/models/incident-notified.js +20 -1
  60. package/build/models/incident-notified.js.map +1 -1
  61. package/build/models/incident-takeover.js +6 -1
  62. package/build/models/incident-takeover.js.map +1 -1
  63. package/build/models/location.js +117 -6
  64. package/build/models/location.js.map +1 -1
  65. package/build/models/mail-log.js +5 -0
  66. package/build/models/mail-log.js.map +1 -1
  67. package/build/models/managed-incident.js +67 -4
  68. package/build/models/managed-incident.js.map +1 -1
  69. package/build/models/mark43-incident-retry.js +0 -1
  70. package/build/models/mark43-incident-retry.js.map +1 -1
  71. package/build/models/message.js +19 -1
  72. package/build/models/message.js.map +1 -1
  73. package/build/models/monitor.js +15 -1
  74. package/build/models/monitor.js.map +1 -1
  75. package/build/models/personnel-import.js +74 -0
  76. package/build/models/personnel-import.js.map +1 -1
  77. package/build/models/personnel-known.js +8 -0
  78. package/build/models/personnel-known.js.map +1 -1
  79. package/build/models/rate-limit.js +6 -0
  80. package/build/models/rate-limit.js.map +1 -1
  81. package/build/models/remote-log-stream.js +0 -1
  82. package/build/models/remote-log-stream.js.map +1 -1
  83. package/build/models/remote-log.js +0 -1
  84. package/build/models/remote-log.js.map +1 -1
  85. package/build/models/schema/agency-saml.js +1 -1
  86. package/build/models/schema/agency-saml.js.map +1 -1
  87. package/build/models/schema/cad-incident.js +0 -1
  88. package/build/models/schema/cad-incident.js.map +1 -1
  89. package/build/models/session.js +44 -6
  90. package/build/models/session.js.map +1 -1
  91. package/build/models/template.js +17 -7
  92. package/build/models/template.js.map +1 -1
  93. package/build/models/user-device.js +17 -0
  94. package/build/models/user-device.js.map +1 -1
  95. package/build/models/user-registration.js +5 -1
  96. package/build/models/user-registration.js.map +1 -1
  97. package/build/models/user.js +59 -6
  98. package/build/models/user.js.map +1 -1
  99. package/build/models/validation-report.js +6 -1
  100. package/build/models/validation-report.js.map +1 -1
  101. package/build/test/location.js +1 -1
  102. package/build/test/location.js.map +1 -1
  103. package/build/test/mock.js +5 -2
  104. package/build/test/mock.js.map +1 -1
  105. package/cspell.json +1 -0
  106. package/definitions/constants.d.ts +1 -1
  107. package/definitions/constants.d.ts.map +1 -1
  108. package/definitions/helpers.d.ts +27 -26
  109. package/definitions/helpers.d.ts.map +1 -1
  110. package/definitions/index.d.ts +4 -4
  111. package/definitions/index.d.ts.map +1 -1
  112. package/definitions/models/action-log.d.ts.map +1 -1
  113. package/definitions/models/agency.d.ts.map +1 -1
  114. package/definitions/models/arcgis-group.d.ts.map +1 -1
  115. package/definitions/models/assignment.d.ts.map +1 -1
  116. package/definitions/models/battalion.d.ts.map +1 -1
  117. package/definitions/models/beacon-log.d.ts.map +1 -1
  118. package/definitions/models/cad-incident-block.d.ts.map +1 -1
  119. package/definitions/models/cad-incident-stream.d.ts.map +1 -1
  120. package/definitions/models/cad-incident.d.ts.map +1 -1
  121. package/definitions/models/cad-simulation.d.ts.map +1 -1
  122. package/definitions/models/cad-status-map.d.ts.map +1 -1
  123. package/definitions/models/cad-status.d.ts.map +1 -1
  124. package/definitions/models/cad-vehicle-status-history.d.ts.map +1 -1
  125. package/definitions/models/cad-vehicle-status.d.ts.map +1 -1
  126. package/definitions/models/cad-vehicle.d.ts.map +1 -1
  127. package/definitions/models/chart-device-stats.d.ts.map +1 -1
  128. package/definitions/models/chart-incident.d.ts.map +1 -1
  129. package/definitions/models/chart-managed-incident.d.ts.map +1 -1
  130. package/definitions/models/chart-user.d.ts.map +1 -1
  131. package/definitions/models/checklist-item.d.ts.map +1 -1
  132. package/definitions/models/checklist.d.ts.map +1 -1
  133. package/definitions/models/csv-import.d.ts.map +1 -1
  134. package/definitions/models/department.d.ts.map +1 -1
  135. package/definitions/models/device-mapping.d.ts.map +1 -1
  136. package/definitions/models/esri.d.ts.map +1 -1
  137. package/definitions/models/incident-event.d.ts.map +1 -1
  138. package/definitions/models/incident-notified.d.ts.map +1 -1
  139. package/definitions/models/incident-takeover.d.ts.map +1 -1
  140. package/definitions/models/location.d.ts.map +1 -1
  141. package/definitions/models/mail-log.d.ts.map +1 -1
  142. package/definitions/models/managed-incident.d.ts.map +1 -1
  143. package/definitions/models/mark43-incident-retry.d.ts.map +1 -1
  144. package/definitions/models/message.d.ts.map +1 -1
  145. package/definitions/models/monitor.d.ts.map +1 -1
  146. package/definitions/models/personnel-import.d.ts.map +1 -1
  147. package/definitions/models/personnel-known.d.ts.map +1 -1
  148. package/definitions/models/rate-limit.d.ts.map +1 -1
  149. package/definitions/models/remote-log-stream.d.ts.map +1 -1
  150. package/definitions/models/remote-log.d.ts.map +1 -1
  151. package/definitions/models/schema/cad-incident.d.ts.map +1 -1
  152. package/definitions/models/session.d.ts.map +1 -1
  153. package/definitions/models/template.d.ts.map +1 -1
  154. package/definitions/models/user-device.d.ts.map +1 -1
  155. package/definitions/models/user-registration.d.ts.map +1 -1
  156. package/definitions/models/user.d.ts.map +1 -1
  157. package/definitions/models/validation-report.d.ts.map +1 -1
  158. package/definitions/test/mock.d.ts.map +1 -1
  159. package/package.json +7 -6
  160. package/src/constants.ts +1 -1
  161. package/src/helpers.ts +4 -0
  162. package/src/index.ts +2 -1
  163. package/src/models/action-log.ts +8 -0
  164. package/src/models/agency.ts +41 -0
  165. package/src/models/arcgis-group.ts +10 -1
  166. package/src/models/assignment.ts +24 -4
  167. package/src/models/battalion.ts +42 -16
  168. package/src/models/beacon-log.ts +6 -1
  169. package/src/models/cad-incident-block.ts +8 -1
  170. package/src/models/cad-incident-stream.ts +31 -1
  171. package/src/models/cad-incident.ts +111 -1
  172. package/src/models/cad-simulation.ts +0 -2
  173. package/src/models/cad-status-map.ts +6 -1
  174. package/src/models/cad-status.ts +13 -2
  175. package/src/models/cad-vehicle-status-history.ts +47 -2
  176. package/src/models/cad-vehicle-status.ts +51 -3
  177. package/src/models/cad-vehicle.ts +35 -2
  178. package/src/models/chart-device-stats.ts +8 -1
  179. package/src/models/chart-incident.ts +14 -1
  180. package/src/models/chart-managed-incident.ts +22 -1
  181. package/src/models/chart-user.ts +14 -1
  182. package/src/models/checklist-item.ts +0 -1
  183. package/src/models/checklist.ts +28 -4
  184. package/src/models/csv-import.ts +7 -0
  185. package/src/models/department.ts +35 -7
  186. package/src/models/device-mapping.ts +19 -0
  187. package/src/models/esri.ts +7 -0
  188. package/src/models/incident-event.ts +45 -6
  189. package/src/models/incident-notified.ts +23 -1
  190. package/src/models/incident-takeover.ts +7 -1
  191. package/src/models/location.ts +133 -8
  192. package/src/models/mail-log.ts +6 -0
  193. package/src/models/managed-incident.ts +75 -4
  194. package/src/models/mark43-incident-retry.ts +0 -1
  195. package/src/models/message.ts +22 -1
  196. package/src/models/monitor.ts +17 -1
  197. package/src/models/personnel-import.ts +84 -0
  198. package/src/models/personnel-known.ts +9 -0
  199. package/src/models/rate-limit.ts +7 -0
  200. package/src/models/remote-log-stream.ts +0 -1
  201. package/src/models/remote-log.ts +0 -1
  202. package/src/models/schema/agency-saml.ts +1 -1
  203. package/src/models/schema/cad-incident.ts +0 -1
  204. package/src/models/session.ts +49 -6
  205. package/src/models/template.ts +17 -7
  206. package/src/models/user-device.ts +20 -0
  207. package/src/models/user-registration.ts +6 -1
  208. package/src/models/user.ts +65 -7
  209. package/src/models/validation-report.ts +7 -1
  210. package/src/test/location.ts +2 -2
  211. package/src/test/mock.ts +7 -2
  212. package/test.sh +1 -1
@@ -45,7 +45,6 @@ export default async function SessionModule(mongoose: MongooseModule) {
45
45
  validator: requiredButAllowEmptyString,
46
46
  message: "departmentId is required",
47
47
  },
48
- index: true,
49
48
  },
50
49
  why: {
51
50
  type: String,
@@ -76,21 +75,65 @@ export default async function SessionModule(mongoose: MongooseModule) {
76
75
  },
77
76
  }, {
78
77
  autoIndex: false,
78
+ toJSON: {
79
+ virtuals: true,
80
+ versionKey: false,
81
+ }
79
82
  });
80
83
 
81
84
  modelSchema.pre("save", function(next) {
82
85
  this._id = this.get("token"); // Copy _id from token
83
86
  next();
84
87
  });
85
- modelSchema.virtual("id").get(function(this: Session) {
86
- return this._id.toString();
88
+
89
+ modelSchema.index({
90
+ departmentId: 1,
91
+ when: -1
92
+ }, {
93
+ name: "departmentId_1_when_-1",
94
+ });
95
+
96
+ // TODO: Review if this should be unique
97
+ modelSchema.index({
98
+ nick: 1,
99
+ }, {
100
+ name: "nick_1",
101
+ // unique: true,
87
102
  });
88
103
 
89
- modelSchema.set("toJSON", {
90
- virtuals: true,
91
- versionKey: false,
104
+ modelSchema.index({
105
+ token: 1,
106
+ active: 1
107
+ }, {
108
+ name: "token_1_active_1",
109
+ });
110
+
111
+ modelSchema.index({
112
+ token: 1,
113
+ }, {
114
+ name: "token_1_unique",
115
+ unique: true,
92
116
  });
93
117
 
118
+ modelSchema.index({
119
+ user: 1,
120
+ active: 1
121
+ }, {
122
+ name: "user_1_active_1",
123
+ });
124
+
125
+ modelSchema.index({
126
+ user: 1,
127
+ when: 1
128
+ }, {
129
+ name: "user_1_when_1",
130
+ });
131
+
132
+ modelSchema.index({
133
+ when: 1,
134
+ }, {
135
+ name: "when_1",
136
+ });
94
137
 
95
138
  return mongoose.model<Session>("Session", modelSchema, "sys_login", { overwriteModels: true });
96
139
  }
@@ -78,7 +78,6 @@ export function TemplateSchema(mongoose: MongooseModule) {
78
78
  departmentId: {
79
79
  type: String,
80
80
  required: true,
81
- index: true,
82
81
  },
83
82
  active: {
84
83
  type: Boolean,
@@ -103,19 +102,30 @@ export function TemplateSchema(mongoose: MongooseModule) {
103
102
  },
104
103
  }, {
105
104
  autoIndex: false,
105
+ toJSON: {
106
+ virtuals: true,
107
+ versionKey: false,
108
+ transform(doc, ret) {
109
+ strictSchema(doc.schema as typeof modelSchema, ret);
110
+ },
111
+ }
106
112
  });
107
113
  modelSchema.virtual("id").get(function(this: Template) {
108
114
  return this._id.toHexString();
109
115
  });
110
116
 
111
- modelSchema.set("toJSON", {
112
- virtuals: true,
113
- versionKey: false,
114
- transform(doc, ret) {
115
- strictSchema(doc.schema as typeof modelSchema, ret);
116
- },
117
+ modelSchema.index({
118
+ departmentId: 1,
119
+ }, {
120
+ name: "departmentId_1",
117
121
  });
118
122
 
123
+ modelSchema.index({
124
+ uuid: 1,
125
+ }, {
126
+ name: "uuid_1_unique",
127
+ unique: true,
128
+ });
119
129
 
120
130
  function strictSchema(schema: typeof modelSchema, ret: Record<string, unknown>) {
121
131
  Object.keys(ret).forEach(function(element) {
@@ -198,6 +198,26 @@ export default async function UserDeviceModule(mongoose: MongooseModule) {
198
198
  autoIndex: false,
199
199
  });
200
200
 
201
+ modelSchema.index({
202
+ departmentId: 1,
203
+ userId: 1,
204
+ }, {
205
+ name: "departmentId_1_userId_1",
206
+ });
207
+
208
+ modelSchema.index({
209
+ "devices.token": 1,
210
+ }, {
211
+ name: "devices_token_1",
212
+ });
213
+
214
+ modelSchema.index({
215
+ userId: 1,
216
+ }, {
217
+ name: "userId_1_unique",
218
+ unique: true,
219
+ });
220
+
201
221
  return mongoose.model<UserDevice>("UserDevice", modelSchema, "massive_user_device", { overwriteModels: true });
202
222
  }
203
223
 
@@ -15,7 +15,6 @@ export default async function UserRegistrationModule(mongoose: MongooseModule) {
15
15
  type: String,
16
16
  default: "",
17
17
  required: true,
18
- index: true,
19
18
  },
20
19
  name: {
21
20
  type: String,
@@ -89,6 +88,12 @@ export default async function UserRegistrationModule(mongoose: MongooseModule) {
89
88
  autoIndex: false
90
89
  });
91
90
 
91
+ modelSchema.index({
92
+ email: 1,
93
+ }, {
94
+ name: "email_1",
95
+ });
96
+
92
97
  return mongoose.model<UserRegistration>("UserRegistration", modelSchema, "massive_user_registration", { overwriteModels: true });
93
98
  }
94
99
 
@@ -36,12 +36,10 @@ export function UserSchema(mongoose: MongooseModule) {
36
36
  nick: {
37
37
  type: String,
38
38
  default: "",
39
- index: true,
40
39
  },
41
40
  email: {
42
41
  type: String,
43
42
  default: "",
44
- index: true,
45
43
  },
46
44
  name: {
47
45
  type: String,
@@ -55,7 +53,6 @@ export function UserSchema(mongoose: MongooseModule) {
55
53
  type: String,
56
54
  default: "",
57
55
  required: true,
58
- index: true,
59
56
  },
60
57
  modified_date: {
61
58
  type: Date,
@@ -271,6 +268,10 @@ export function UserSchema(mongoose: MongooseModule) {
271
268
  },
272
269
  }, {
273
270
  autoIndex: false,
271
+ toJSON: {
272
+ virtuals: true,
273
+ versionKey: false,
274
+ }
274
275
  });
275
276
 
276
277
  // NO _id on User schema?
@@ -278,11 +279,68 @@ export function UserSchema(mongoose: MongooseModule) {
278
279
  return this._id.toHexString();
279
280
  });
280
281
 
281
- modelSchema.set("toJSON", {
282
- virtuals: true,
283
- versionKey: false,
282
+ modelSchema.index({
283
+ departmentId: 1,
284
+ }, {
285
+ name: "departmentId_1",
286
+ });
287
+
288
+ modelSchema.index({
289
+ departmentId: 1,
290
+ email: 1
291
+ }, {
292
+ name: "departmentId_1_email_1",
293
+ });
294
+
295
+ modelSchema.index({
296
+ departmentId: 1,
297
+ vehicle: 1
298
+ }, {
299
+ name: "departmentId_1_vehicle_1_partial",
300
+ partialFilterExpression: {
301
+ "vehicle": {
302
+ "$exists": true
303
+ }
304
+ }
305
+ });
306
+
307
+ modelSchema.index({
308
+ email: 1,
309
+ }, {
310
+ name: "email_1_unique",
311
+ unique: true,
284
312
  });
285
313
 
314
+ modelSchema.index({
315
+ nick: 1,
316
+ }, {
317
+ name: "nick_1_unique",
318
+ unique: true,
319
+ });
320
+
321
+ // A field has to be defined as text and weight
322
+ modelSchema.index({
323
+ nick: "text",
324
+ email: "text",
325
+ name: "text",
326
+ }, {
327
+ name: "nick_text_email_text_name_text_mapId_text_arcGISAuth.username_text_vehicle.radioName_text",
328
+ weights: {
329
+ email: 10,
330
+ name: 1,
331
+ nick: 9,
332
+ },
333
+ textIndexVersion: 3,
334
+ language_override: "language",
335
+ default_language: "english",
336
+ });
337
+
338
+ modelSchema.index({
339
+ token: 1,
340
+ tokenExpireAt: 1
341
+ }, {
342
+ name: "token_1_tokenExpireAt_1",
343
+ });
286
344
 
287
345
  return modelSchema;
288
346
  }
@@ -292,4 +350,4 @@ export default async function UserModule(mongoose: MongooseModule) {
292
350
  return mongoose.model<User>("User", modelSchema, "sys_user", { overwriteModels: true });
293
351
  }
294
352
 
295
- export interface UserModel extends Model<User> { }
353
+ export interface UserModel extends Model<User> { }
@@ -21,7 +21,6 @@ export function ValidationReportSchema(mongoose: MongooseModule) {
21
21
  type: Schema.Types.ObjectId,
22
22
  ref: "Department",
23
23
  required: true,
24
- unique: true,
25
24
  },
26
25
  location: {
27
26
  type: [ValidationErrorItem],
@@ -59,6 +58,13 @@ export function ValidationReportSchema(mongoose: MongooseModule) {
59
58
  autoIndex: false,
60
59
  });
61
60
 
61
+ modelSchema.index({
62
+ departmentId: 1,
63
+ }, {
64
+ name: "departmentId_unique",
65
+ unique: true,
66
+ });
67
+
62
68
  return modelSchema;
63
69
  }
64
70
 
@@ -18,6 +18,8 @@ describe("Location", function() {
18
18
  mongoose
19
19
  });
20
20
  testItem = mock.location;
21
+
22
+ await mock.beforeEach();
21
23
  });
22
24
  afterEach(async function() {
23
25
  await mongoose.disconnect();
@@ -74,8 +76,6 @@ describe("Location", function() {
74
76
 
75
77
  const found = await models.Location.findOne(geoQuery);
76
78
  assert.isObject(found);
77
-
78
- await models.Location.collection.dropIndexes();
79
79
  });
80
80
 
81
81
  it("decodes .visibility", async function() {
package/src/test/mock.ts CHANGED
@@ -22,8 +22,12 @@ export default function mockModule(dependencies: { mongoose: Mongoose; }) {
22
22
  mongoose
23
23
  } = dependencies;
24
24
 
25
+ const ObjectId = mongoose.Types.ObjectId;
26
+
27
+ const departmentId = new ObjectId().toString();
28
+
25
29
  const mark43IncidentRetry = {
26
- departmentId: "123",
30
+ departmentId,
27
31
  incidentNumber: "abc123",
28
32
  active: true,
29
33
  mark43IncidentId: 123,
@@ -935,7 +939,7 @@ export default function mockModule(dependencies: { mongoose: Mongoose; }) {
935
939
 
936
940
  const location = {
937
941
  _id: new mongoose.Types.ObjectId(),
938
- departmentId: "d123",
942
+ departmentId,
939
943
  userId: "542a40db20783c000000153d",
940
944
  uuid: "92c8f732-52b7-46cc-855a-d54fddfe3172",
941
945
  username: "E23",
@@ -1341,6 +1345,7 @@ export default function mockModule(dependencies: { mongoose: Mongoose; }) {
1341
1345
  for (const coll of items ?? []) {
1342
1346
  // console.log(`Emptying ${coll.collectionName}.`);
1343
1347
  await coll.deleteMany({});
1348
+ await coll.dropIndexes();
1344
1349
  }
1345
1350
  }
1346
1351
 
package/test.sh CHANGED
@@ -17,7 +17,7 @@ if hash brew 2>/dev/null; then
17
17
  fi
18
18
  fi
19
19
 
20
- NODE_VERSION="v16.19.0"
20
+ NODE_VERSION="v20.11.1"
21
21
 
22
22
  nvm use $NODE_VERSION || nvm install $NODE_VERSION
23
23