tabletcommand-backend-models 7.4.111 → 7.4.113

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 (71) hide show
  1. package/build/constants.js +6 -1
  2. package/build/constants.js.map +1 -1
  3. package/build/index.js +6 -1
  4. package/build/index.js.map +1 -1
  5. package/build/models/data-sharing-agreement.js +161 -0
  6. package/build/models/data-sharing-agreement.js.map +1 -0
  7. package/build/models/department.js +17 -1
  8. package/build/models/department.js.map +1 -1
  9. package/build/models/drone-connection.js +101 -0
  10. package/build/models/drone-connection.js.map +1 -0
  11. package/build/models/user.js +4 -0
  12. package/build/models/user.js.map +1 -1
  13. package/build/test/0index.js +1 -0
  14. package/build/test/0index.js.map +1 -1
  15. package/build/test/data-sharing-agreement.js +220 -0
  16. package/build/test/data-sharing-agreement.js.map +1 -0
  17. package/build/test/department.js +5 -0
  18. package/build/test/department.js.map +1 -1
  19. package/build/test/drone-connection.js +152 -0
  20. package/build/test/drone-connection.js.map +1 -0
  21. package/build/test/mock.js +22 -0
  22. package/build/test/mock.js.map +1 -1
  23. package/build/test/user.js +10 -0
  24. package/build/test/user.js.map +1 -1
  25. package/build/types/data-sharing-agreement.js +8 -0
  26. package/build/types/data-sharing-agreement.js.map +1 -0
  27. package/build/types/drone-connection.js +3 -0
  28. package/build/types/drone-connection.js.map +1 -0
  29. package/cspell.json +1 -0
  30. package/definitions/constants.d.ts +4 -0
  31. package/definitions/constants.d.ts.map +1 -1
  32. package/definitions/index.d.ts +17 -2
  33. package/definitions/index.d.ts.map +1 -1
  34. package/definitions/models/data-sharing-agreement.d.ts +13 -0
  35. package/definitions/models/data-sharing-agreement.d.ts.map +1 -0
  36. package/definitions/models/department.d.ts +3 -0
  37. package/definitions/models/department.d.ts.map +1 -1
  38. package/definitions/models/drone-connection.d.ts +22 -0
  39. package/definitions/models/drone-connection.d.ts.map +1 -0
  40. package/definitions/models/user.d.ts.map +1 -1
  41. package/definitions/test/data-sharing-agreement.d.ts +2 -0
  42. package/definitions/test/data-sharing-agreement.d.ts.map +1 -0
  43. package/definitions/test/drone-connection.d.ts +2 -0
  44. package/definitions/test/drone-connection.d.ts.map +1 -0
  45. package/definitions/test/mock.d.ts +22 -0
  46. package/definitions/test/mock.d.ts.map +1 -1
  47. package/definitions/types/data-sharing-agreement.d.ts +30 -0
  48. package/definitions/types/data-sharing-agreement.d.ts.map +1 -0
  49. package/definitions/types/department.d.ts +4 -0
  50. package/definitions/types/department.d.ts.map +1 -1
  51. package/definitions/types/drone-connection.d.ts +19 -0
  52. package/definitions/types/drone-connection.d.ts.map +1 -0
  53. package/definitions/types/user.d.ts +1 -0
  54. package/definitions/types/user.d.ts.map +1 -1
  55. package/package.json +1 -1
  56. package/src/constants.ts +5 -0
  57. package/src/index.ts +16 -0
  58. package/src/models/data-sharing-agreement.ts +182 -0
  59. package/src/models/department.ts +19 -0
  60. package/src/models/drone-connection.ts +121 -0
  61. package/src/models/user.ts +4 -0
  62. package/src/test/0index.ts +1 -0
  63. package/src/test/data-sharing-agreement.ts +238 -0
  64. package/src/test/department.ts +6 -0
  65. package/src/test/drone-connection.ts +164 -0
  66. package/src/test/mock.ts +23 -0
  67. package/src/test/user.ts +11 -0
  68. package/src/types/data-sharing-agreement.ts +49 -0
  69. package/src/types/department.ts +5 -0
  70. package/src/types/drone-connection.ts +21 -0
  71. package/src/types/user.ts +1 -0
@@ -0,0 +1,19 @@
1
+ import { Types } from "mongoose";
2
+ import { DroneProvider } from "../constants";
3
+ import { EncryptedDataType } from "./common";
4
+ export interface DroneConnectionOptionsType {
5
+ drones: "all" | "listed";
6
+ serials: string[];
7
+ }
8
+ export interface DroneConnectionType {
9
+ _id: Types.ObjectId;
10
+ departmentId: Types.ObjectId;
11
+ provider: DroneProvider;
12
+ active: boolean;
13
+ label: string;
14
+ authToken: EncryptedDataType;
15
+ authSecret: EncryptedDataType;
16
+ options?: DroneConnectionOptionsType;
17
+ modified: Date;
18
+ }
19
+ //# sourceMappingURL=drone-connection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drone-connection.d.ts","sourceRoot":"","sources":["../../src/types/drone-connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,KAAK,GAAG,QAAQ,CAAC;IACzB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAElC,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC;IACpB,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC;IAC7B,QAAQ,EAAE,aAAa,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,iBAAiB,CAAC;IAC7B,UAAU,EAAE,iBAAiB,CAAC;IAC9B,OAAO,CAAC,EAAE,0BAA0B,CAAC;IACrC,QAAQ,EAAE,IAAI,CAAC;CAChB"}
@@ -128,6 +128,7 @@ export interface UserType {
128
128
  shareWith3rdPartiesEnabled: boolean;
129
129
  socketIO: PubNubTokenSchemaType;
130
130
  stealthStatus: string;
131
+ visibleSources: string[];
131
132
  superuser: boolean;
132
133
  superUserReadOnly: boolean;
133
134
  syncLoggingExpireDate: Date;
@@ -1 +1 @@
1
- {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../src/types/user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,aAAa,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,IAAI,CAAC;IACR,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,mBAAmB,CAAC;IACzB,OAAO,EAAE,mBAAmB,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,wBAAwB,EAAE,eAAe,EAAE,CAAC;IAC5C,4BAA4B,EAAE,mBAAmB,EAAE,CAAC;IACpD,kBAAkB,EAAE,eAAe,CAAA;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,OAAO,CAAC;IACxB,yBAAyB,EAAE,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,IAAI,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,qBAAqB,EAAE,MAAM,CAAC;IAC9B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC;IACzB,UAAU,EAAE,kBAAkB,CAAC;IAC/B,eAAe,EAAE,mBAAmB,CAAC;IACrC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,2BAA2B,EAAE,OAAO,CAAC;IACrC,0BAA0B,EAAE,OAAO,CAAC;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB,EAAE,OAAO,CAAC;IAC9B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,iBAAiB,EAAE,OAAO,CAAC;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;IAClC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,IAAI,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,OAAO,CAAC;IACxB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,qBAAqB,CAAA;IAC/B,yBAAyB,EAAE,OAAO,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,0BAA0B,EAAE,OAAO,CAAC;IACpC,QAAQ,EAAE,qBAAqB,CAAC;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,qBAAqB,EAAE,IAAI,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,IAAI,CAAC;IACpB,uBAAuB,EAAE,OAAO,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,iBAAiB,CAAC;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC;IACX,cAAc,EAAE;QACd,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,UAAU,EAAE,MAAM,CAAC;QACnB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;CACH"}
1
+ {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../src/types/user.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tabletcommand-backend-models",
3
- "version": "7.4.111",
3
+ "version": "7.4.113",
4
4
  "description": "Tablet Command Backend Models",
5
5
  "scripts": {
6
6
  "lint": "eslint src",
package/src/constants.ts CHANGED
@@ -10,6 +10,7 @@ export enum LocationSource {
10
10
  MotorolaConverged = "MotorolaConverged",
11
11
  OneStep = "OneStep",
12
12
  Samsara = "Samsara",
13
+ Skydio = "Skydio",
13
14
  Skymira = "Skymira",
14
15
  SKYTRAC = "SKYTRAC",
15
16
  Somewear = "Somewear",
@@ -22,6 +23,10 @@ export enum LocationSource {
22
23
  VehicleModem = "VehicleModem"
23
24
  }
24
25
 
26
+ export enum DroneProvider {
27
+ Skydio = "skydio"
28
+ }
29
+
25
30
  export enum LocationKindType {
26
31
  FixedWing = "fixed-wing",
27
32
  Helicopter = "helicopter",
package/src/index.ts CHANGED
@@ -6,6 +6,7 @@ export {
6
6
  AccountCallerType,
7
7
  AccountIndustry,
8
8
  DepartmentReportOdometer,
9
+ DroneProvider,
9
10
  FireMapperLayers,
10
11
  IncidentFilterKind,
11
12
  LocationKindType,
@@ -50,8 +51,10 @@ async function wireModels(mongoose: MongooseModule) {
50
51
  ChecklistItem: await getModel(import("./models/checklist-item")),
51
52
  CSVImport: await getModel(import("./models/csv-import")),
52
53
  AudioStreamAuthentication: await getModel(import("./models/audio-stream-authentication")),
54
+ DataSharingAgreement: await getModel(import("./models/data-sharing-agreement")),
53
55
  Department: await getModel(import("./models/department")),
54
56
  DeviceMapping: await getModel(import("./models/device-mapping")),
57
+ DroneConnection: await getModel(import("./models/drone-connection")),
55
58
  Esri: await getModel(import("./models/esri")),
56
59
  GSTMapping: await getModel(import("./models/gst-mapping")),
57
60
  GlobalSettings: await getModel(import("./models/global-settings")),
@@ -118,8 +121,10 @@ export { Checklist, ChecklistModel } from "./models/checklist";
118
121
  export { ChecklistItem, ChecklistItemModel } from "./models/checklist-item";
119
122
  export { CSVImport, CSVImportModel } from "./models/csv-import";
120
123
  export { AudioStreamAuthentication, AudioStreamAuthenticationModel } from "./models/audio-stream-authentication";
124
+ export { DataSharingAgreement, DataSharingAgreementModel } from "./models/data-sharing-agreement";
121
125
  export { Department, DepartmentModel } from "./models/department";
122
126
  export { DeviceMapping, DeviceMappingModel } from "./models/device-mapping";
127
+ export { DroneConnection, DroneConnectionModel } from "./models/drone-connection";
123
128
  export { Esri, EsriModel } from "./models/esri";
124
129
  export { GSTMapping, GSTMappingModel } from "./models/gst-mapping";
125
130
  export { GlobalSettings, GlobalSettingsModel } from "./models/global-settings";
@@ -161,19 +166,30 @@ export { WatchDutyEvent, WatchDutyEventModel } from "./models/watchduty-event";
161
166
 
162
167
  export * from "./helpers";
163
168
  export { IntegrationTypes } from "./types/department";
169
+ export { DataSharingAgreementActions } from "./types/data-sharing-agreement";
164
170
 
165
171
  export * from "./checklist-item-event-message";
166
172
 
167
173
  // Export types
168
174
  export type {
175
+ DronesConfigurationType,
169
176
  ForwardingConnectionType,
170
177
  ForwardingConfigType,
171
178
  ForwardFieldsType,
172
179
  IntegrationType,
173
180
  } from "./types/department";
181
+ export type {
182
+ DroneConnectionOptionsType,
183
+ DroneConnectionType,
184
+ } from "./types/drone-connection";
174
185
  export type {
175
186
  CADInterfaceMetaDataType,
176
187
  } from "./types/cad-interface-meta-data";
188
+ export type {
189
+ DataSharingAgreementAction,
190
+ DataSharingAgreementType,
191
+ DataSharingVendorConsentType,
192
+ } from "./types/data-sharing-agreement";
177
193
 
178
194
  // Export default vars
179
195
  export {
@@ -0,0 +1,182 @@
1
+ import { Model } from "mongoose";
2
+ import * as uuid from "uuid";
3
+ import { mongooseLeanVirtuals } from "mongoose-lean-virtuals";
4
+
5
+ import {
6
+ currentDate,
7
+ MongooseModule,
8
+ } from "../helpers";
9
+
10
+ import {
11
+ DataSharingAgreementActions,
12
+ DataSharingAgreementType,
13
+ DataSharingVendorConsentType,
14
+ } from "../types/data-sharing-agreement";
15
+
16
+ export interface DataSharingAgreement extends DataSharingAgreementType, Record<string, unknown> { }
17
+
18
+ // Append-only legal record of data sharing sign-offs. Every signature, change and
19
+ // revocation inserts a new document; the collection IS the revision history.
20
+ //
21
+ // - No TTL index: records must never auto-purge. Removal only happens on a verified
22
+ // legal request, as a manual engineer-run operation never via an API.
23
+ // - Record fields are `immutable` so a loaded document cannot be re-saved with
24
+ // different content. This gives us a static timeline of events as they happen
25
+ export default async function DataSharingAgreementModule(mongoose: MongooseModule) {
26
+ const { Schema } = mongoose;
27
+
28
+ const DataSharingVendorConsent = new Schema<DataSharingVendorConsentType>({
29
+ key: {
30
+ type: String,
31
+ required: true,
32
+ },
33
+ label: {
34
+ type: String,
35
+ default: "",
36
+ },
37
+ checked: {
38
+ type: Boolean,
39
+ default: false,
40
+ },
41
+ }, {
42
+ _id: false,
43
+ id: false,
44
+ });
45
+
46
+ const modelSchema = new Schema<DataSharingAgreement>({
47
+ _id: {
48
+ type: Schema.Types.ObjectId,
49
+ auto: true,
50
+ },
51
+ uuid: {
52
+ type: String,
53
+ required: true,
54
+ default: uuid.v4,
55
+ immutable: true,
56
+ },
57
+
58
+ // Who / where
59
+ departmentId: {
60
+ type: String,
61
+ required: true,
62
+ immutable: true,
63
+ },
64
+ // Department.department at signing time (Using the value and not id on purpose)
65
+ departmentName: {
66
+ type: String,
67
+ default: "",
68
+ immutable: true,
69
+ },
70
+ // Unset for account-wide signatures
71
+ agencyId: {
72
+ type: Schema.Types.ObjectId,
73
+ ref: "Agency",
74
+ default: null,
75
+ immutable: true,
76
+ },
77
+ agencyName: {
78
+ type: String,
79
+ default: "",
80
+ immutable: true,
81
+ },
82
+ userId: {
83
+ type: String,
84
+ required: true,
85
+ immutable: true,
86
+ },
87
+ email: {
88
+ type: String,
89
+ required: true,
90
+ immutable: true,
91
+ },
92
+ // User.name at signing time
93
+ signerName: {
94
+ type: String,
95
+ default: "",
96
+ immutable: true,
97
+ },
98
+
99
+ // What they signed
100
+ agreementTitle: {
101
+ type: String,
102
+ required: true,
103
+ immutable: true,
104
+ },
105
+ // Versioned in service code and rolled out with deploys
106
+ agreementVersion: {
107
+ type: String,
108
+ required: true,
109
+ immutable: true,
110
+ },
111
+ // FULL text as displayed to the signer, stored verbatim, never a reference
112
+ agreementText: {
113
+ type: String,
114
+ required: true,
115
+ immutable: true,
116
+ },
117
+ action: {
118
+ type: String,
119
+ enum: DataSharingAgreementActions,
120
+ required: true,
121
+ immutable: true,
122
+ },
123
+ // Full checkbox state after this action
124
+ consents: {
125
+ type: [DataSharingVendorConsent],
126
+ default: [],
127
+ immutable: true,
128
+ },
129
+
130
+ // Evidence
131
+ remoteAddress: {
132
+ type: String,
133
+ default: "",
134
+ immutable: true,
135
+ },
136
+ userAgent: {
137
+ type: String,
138
+ default: "",
139
+ immutable: true,
140
+ },
141
+ appVersion: {
142
+ type: String,
143
+ default: "",
144
+ immutable: true,
145
+ },
146
+
147
+ // Signing timestamp, server-side
148
+ createdAt: {
149
+ type: Date,
150
+ default: currentDate,
151
+ immutable: true,
152
+ },
153
+ modified: {
154
+ type: Date,
155
+ default: currentDate,
156
+ },
157
+ }, {
158
+ autoIndex: false,
159
+ toJSON: {
160
+ virtuals: true,
161
+ versionKey: false,
162
+ },
163
+ });
164
+
165
+ // History (newest first) and "latest record" lookups per account
166
+ modelSchema.index({
167
+ departmentId: 1,
168
+ createdAt: -1,
169
+ }, {
170
+ name: "departmentId_1_createdAt_-1",
171
+ });
172
+
173
+ modelSchema.virtual("id").get(function(this: DataSharingAgreement) {
174
+ return this._id.toHexString();
175
+ });
176
+
177
+ modelSchema.plugin(mongooseLeanVirtuals);
178
+
179
+ return mongoose.model<DataSharingAgreement>("DataSharingAgreement", modelSchema, "massive_data_sharing_agreement", { overwriteModels: true });
180
+ }
181
+
182
+ export interface DataSharingAgreementModel extends Model<DataSharingAgreement> { }
@@ -79,6 +79,7 @@ import {
79
79
  UnitStatusCodesConfigType,
80
80
  OneStepConfigurationType,
81
81
  DroneSenseConfigurationType,
82
+ DronesConfigurationType,
82
83
  USFTConfigurationType,
83
84
  VehicleStatusWebhookConfigType,
84
85
  VehicleStatusWebhookConnectionType,
@@ -547,6 +548,10 @@ export const DroneSenseConfigurationDefault = {
547
548
  apiKey: "",
548
549
  };
549
550
 
551
+ export const DronesConfigurationDefault = {
552
+ enabled: false,
553
+ };
554
+
550
555
  export const OrientationMarkerColorDefault: ColorSchemaType = {
551
556
  background: "#FC2125",
552
557
  text: "#FFFFFF",
@@ -1529,6 +1534,16 @@ export default async function DepartmentModule(mongoose: MongooseModule) {
1529
1534
  id: false,
1530
1535
  });
1531
1536
 
1537
+ const DronesConfiguration = new Schema<DronesConfigurationType>({
1538
+ enabled: {
1539
+ type: Boolean,
1540
+ default: false,
1541
+ },
1542
+ }, {
1543
+ _id: false,
1544
+ id: false,
1545
+ });
1546
+
1532
1547
  const FireMapperConfiguration = new Schema<FireMapperConfigurationType>({
1533
1548
  enabled: {
1534
1549
  type: Boolean,
@@ -2410,6 +2425,10 @@ export default async function DepartmentModule(mongoose: MongooseModule) {
2410
2425
  type: DroneSenseConfiguration,
2411
2426
  default: DroneSenseConfigurationDefault,
2412
2427
  },
2428
+ drones: {
2429
+ type: DronesConfiguration,
2430
+ default: DronesConfigurationDefault,
2431
+ },
2413
2432
  mark43: {
2414
2433
  type: Mark43Config,
2415
2434
  default: Mark43ConfigDefault
@@ -0,0 +1,121 @@
1
+ import { Model } from "mongoose";
2
+
3
+ import { DroneProvider } from "../constants";
4
+ import {
5
+ currentDate,
6
+ MongooseModule,
7
+ } from "../helpers";
8
+ import { EncryptedDataType } from "../types/common";
9
+ import {
10
+ DroneConnectionOptionsType,
11
+ DroneConnectionType,
12
+ } from "../types/drone-connection";
13
+
14
+ export interface DroneConnection extends DroneConnectionType, Record<string, unknown> {
15
+ }
16
+
17
+ const EncryptedDataDefault: EncryptedDataType = {
18
+ iv: "",
19
+ encryptedData: "",
20
+ };
21
+
22
+ export function DroneConnectionSchema(mongoose: MongooseModule) {
23
+ const { Schema } = mongoose;
24
+
25
+ const EncryptedData = new Schema<EncryptedDataType>({
26
+ iv: {
27
+ type: String,
28
+ default: "",
29
+ },
30
+ encryptedData: {
31
+ type: String,
32
+ default: "",
33
+ },
34
+ }, {
35
+ _id: false,
36
+ id: false,
37
+ });
38
+
39
+ const DroneConnectionOptions = new Schema<DroneConnectionOptionsType>({
40
+ drones: {
41
+ type: String,
42
+ enum: ["all", "listed"],
43
+ default: "all",
44
+ },
45
+ serials: {
46
+ type: [String],
47
+ default: [],
48
+ },
49
+ }, {
50
+ _id: false,
51
+ id: false,
52
+ });
53
+
54
+ const modelSchema = new Schema<DroneConnectionType>({
55
+ departmentId: {
56
+ type: Schema.Types.ObjectId,
57
+ ref: "Department",
58
+ required: true,
59
+ },
60
+ provider: {
61
+ type: String,
62
+ enum: Object.values(DroneProvider),
63
+ required: true,
64
+ },
65
+ active: {
66
+ type: Boolean,
67
+ default: false,
68
+ },
69
+ label: {
70
+ type: String,
71
+ default: "",
72
+ },
73
+ authToken: {
74
+ type: EncryptedData,
75
+ default: EncryptedDataDefault,
76
+ },
77
+ authSecret: {
78
+ type: EncryptedData,
79
+ default: EncryptedDataDefault,
80
+ },
81
+ options: {
82
+ type: DroneConnectionOptions,
83
+ required: false,
84
+ },
85
+ modified: {
86
+ type: Date,
87
+ default: currentDate,
88
+ },
89
+ }, {
90
+ autoIndex: false,
91
+ timestamps: {
92
+ createdAt: false,
93
+ updatedAt: "modified",
94
+ },
95
+ });
96
+
97
+ modelSchema.index({
98
+ departmentId: 1,
99
+ }, {
100
+ name: "departmentId_1",
101
+ });
102
+
103
+ modelSchema.index({
104
+ departmentId: 1,
105
+ provider: 1,
106
+ label: 1,
107
+ }, {
108
+ name: "departmentId_1_provider_1_label_1_unique",
109
+ unique: true,
110
+ });
111
+
112
+ return modelSchema;
113
+ }
114
+
115
+ export default async function DroneConnectionModule(mongoose: MongooseModule) {
116
+ const modelSchema = DroneConnectionSchema(mongoose);
117
+ return mongoose.model<DroneConnection>("DroneConnection", modelSchema, "massive_drone_connection", { overwriteModels: true });
118
+ }
119
+
120
+ export interface DroneConnectionModel extends Model<DroneConnection> {
121
+ }
@@ -295,6 +295,10 @@ export function UserSchema(mongoose: MongooseModule) {
295
295
  type: String,
296
296
  default: "prohibited",
297
297
  },
298
+ visibleSources: {
299
+ type: [String],
300
+ default: [],
301
+ },
298
302
 
299
303
  canCreateShareIncidentCode: {
300
304
  type: Boolean,
@@ -39,6 +39,7 @@ describe(" Models", function() {
39
39
  assert.isFunction(models.Checklist, "Missing Checklist");
40
40
  assert.isFunction(models.ChecklistItem, "Missing ChecklistItem");
41
41
  assert.isFunction(models.CSVImport, "Missing CSVImport");
42
+ assert.isFunction(models.DataSharingAgreement, "Missing DataSharingAgreement");
42
43
  assert.isFunction(models.Department, "Missing Department");
43
44
  assert.isFunction(models.DeviceMapping, "Missing DeviceMapping");
44
45
  assert.isFunction(models.Esri, "Missing Esri");