@oneuptime/common 11.1.1 → 11.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 (149) hide show
  1. package/Models/DatabaseModels/Alert.ts +55 -0
  2. package/Models/DatabaseModels/Incident.ts +55 -0
  3. package/Models/DatabaseModels/Index.ts +12 -0
  4. package/Models/DatabaseModels/IoTDevice.ts +690 -0
  5. package/Models/DatabaseModels/IoTFleet.ts +862 -0
  6. package/Models/DatabaseModels/IoTFleetLabelRule.ts +514 -0
  7. package/Models/DatabaseModels/IoTFleetOwnerRule.ts +596 -0
  8. package/Models/DatabaseModels/IoTFleetOwnerTeam.ts +485 -0
  9. package/Models/DatabaseModels/IoTFleetOwnerUser.ts +484 -0
  10. package/Models/DatabaseModels/ScheduledMaintenance.ts +55 -0
  11. package/Server/API/IoTDeviceAPI.ts +128 -0
  12. package/Server/API/TelemetryAPI.ts +104 -35
  13. package/Server/Infrastructure/Postgres/SchemaMigrations/1782900000000-AddIoTFleetAndDeviceTables.ts +399 -0
  14. package/Server/Infrastructure/Postgres/SchemaMigrations/1783000000000-AddIoTFleetActivityJoinTables.ts +97 -0
  15. package/Server/Infrastructure/Postgres/SchemaMigrations/1783010000000-MigrationName.ts +979 -0
  16. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +6 -0
  17. package/Server/Services/IoTDeviceService.ts +356 -0
  18. package/Server/Services/IoTFleetLabelRuleEngineService.ts +198 -0
  19. package/Server/Services/IoTFleetLabelRuleService.ts +14 -0
  20. package/Server/Services/IoTFleetOwnerRuleEngineService.ts +216 -0
  21. package/Server/Services/IoTFleetOwnerRuleService.ts +14 -0
  22. package/Server/Services/IoTFleetOwnerTeamService.ts +10 -0
  23. package/Server/Services/IoTFleetOwnerUserService.ts +10 -0
  24. package/Server/Services/IoTFleetService.ts +376 -0
  25. package/Server/Services/OpenTelemetryIngestService.ts +16 -0
  26. package/Server/Services/StatusPageService.ts +69 -26
  27. package/Server/Services/StatusPageSubscriberNotificationTemplateService.ts +36 -0
  28. package/Server/Services/TelemetryUsageBillingService.ts +18 -0
  29. package/Server/Services/TraceAggregationService.ts +174 -0
  30. package/Server/Utils/Monitor/MonitorAlert.ts +24 -4
  31. package/Server/Utils/Monitor/MonitorClusterContext.ts +26 -2
  32. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +4 -2
  33. package/Server/Utils/Monitor/MonitorIncident.ts +39 -5
  34. package/Server/Utils/Monitor/MonitorMaintenanceSuppression.ts +14 -0
  35. package/Server/Utils/Monitor/SeriesResourceLabels.ts +22 -0
  36. package/Server/Utils/Telemetry/IoTSnapshotScan.ts +408 -0
  37. package/Tests/Server/Utils/Monitor/MonitorMaintenanceSuppression.test.ts +36 -0
  38. package/Types/Icon/IconProp.ts +1 -0
  39. package/Types/Monitor/IotAlertTemplates.ts +593 -0
  40. package/Types/Monitor/IotMetricCatalog.ts +146 -0
  41. package/Types/Monitor/MonitorCriteriaInstance.ts +12 -2
  42. package/Types/Monitor/MonitorStep.ts +31 -0
  43. package/Types/Monitor/MonitorStepIoTMonitor.ts +65 -0
  44. package/Types/Monitor/MonitorType.ts +12 -1
  45. package/Types/Permission.ts +230 -0
  46. package/Types/StatusPage/StatusPageSubscriberNotificationEventType.ts +3 -0
  47. package/Types/Telemetry/ServiceType.ts +1 -0
  48. package/UI/Components/Charts/ChartGroup/ChartGroup.tsx +5 -5
  49. package/UI/Components/Icon/Icon.tsx +18 -2
  50. package/UI/Components/Page/Page.tsx +1 -2
  51. package/build/dist/Models/DatabaseModels/Alert.js +54 -0
  52. package/build/dist/Models/DatabaseModels/Alert.js.map +1 -1
  53. package/build/dist/Models/DatabaseModels/Incident.js +54 -0
  54. package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
  55. package/build/dist/Models/DatabaseModels/Index.js +12 -0
  56. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  57. package/build/dist/Models/DatabaseModels/IoTDevice.js +722 -0
  58. package/build/dist/Models/DatabaseModels/IoTDevice.js.map +1 -0
  59. package/build/dist/Models/DatabaseModels/IoTFleet.js +882 -0
  60. package/build/dist/Models/DatabaseModels/IoTFleet.js.map +1 -0
  61. package/build/dist/Models/DatabaseModels/IoTFleetLabelRule.js +522 -0
  62. package/build/dist/Models/DatabaseModels/IoTFleetLabelRule.js.map +1 -0
  63. package/build/dist/Models/DatabaseModels/IoTFleetOwnerRule.js +603 -0
  64. package/build/dist/Models/DatabaseModels/IoTFleetOwnerRule.js.map +1 -0
  65. package/build/dist/Models/DatabaseModels/IoTFleetOwnerTeam.js +503 -0
  66. package/build/dist/Models/DatabaseModels/IoTFleetOwnerTeam.js.map +1 -0
  67. package/build/dist/Models/DatabaseModels/IoTFleetOwnerUser.js +502 -0
  68. package/build/dist/Models/DatabaseModels/IoTFleetOwnerUser.js.map +1 -0
  69. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +54 -0
  70. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js.map +1 -1
  71. package/build/dist/Server/API/IoTDeviceAPI.js +92 -0
  72. package/build/dist/Server/API/IoTDeviceAPI.js.map +1 -0
  73. package/build/dist/Server/API/TelemetryAPI.js +76 -27
  74. package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
  75. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1782900000000-AddIoTFleetAndDeviceTables.js +187 -0
  76. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1782900000000-AddIoTFleetAndDeviceTables.js.map +1 -0
  77. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783000000000-AddIoTFleetActivityJoinTables.js +48 -0
  78. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783000000000-AddIoTFleetActivityJoinTables.js.map +1 -0
  79. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783010000000-MigrationName.js +340 -0
  80. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783010000000-MigrationName.js.map +1 -0
  81. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +6 -0
  82. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  83. package/build/dist/Server/Services/IoTDeviceService.js +249 -0
  84. package/build/dist/Server/Services/IoTDeviceService.js.map +1 -0
  85. package/build/dist/Server/Services/IoTFleetLabelRuleEngineService.js +166 -0
  86. package/build/dist/Server/Services/IoTFleetLabelRuleEngineService.js.map +1 -0
  87. package/build/dist/Server/Services/IoTFleetLabelRuleService.js +13 -0
  88. package/build/dist/Server/Services/IoTFleetLabelRuleService.js.map +1 -0
  89. package/build/dist/Server/Services/IoTFleetOwnerRuleEngineService.js +186 -0
  90. package/build/dist/Server/Services/IoTFleetOwnerRuleEngineService.js.map +1 -0
  91. package/build/dist/Server/Services/IoTFleetOwnerRuleService.js +13 -0
  92. package/build/dist/Server/Services/IoTFleetOwnerRuleService.js.map +1 -0
  93. package/build/dist/Server/Services/IoTFleetOwnerTeamService.js +9 -0
  94. package/build/dist/Server/Services/IoTFleetOwnerTeamService.js.map +1 -0
  95. package/build/dist/Server/Services/IoTFleetOwnerUserService.js +9 -0
  96. package/build/dist/Server/Services/IoTFleetOwnerUserService.js.map +1 -0
  97. package/build/dist/Server/Services/IoTFleetService.js +340 -0
  98. package/build/dist/Server/Services/IoTFleetService.js.map +1 -0
  99. package/build/dist/Server/Services/OpenTelemetryIngestService.js +26 -11
  100. package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
  101. package/build/dist/Server/Services/StatusPageService.js +57 -23
  102. package/build/dist/Server/Services/StatusPageService.js.map +1 -1
  103. package/build/dist/Server/Services/StatusPageSubscriberNotificationTemplateService.js +34 -0
  104. package/build/dist/Server/Services/StatusPageSubscriberNotificationTemplateService.js.map +1 -1
  105. package/build/dist/Server/Services/TelemetryUsageBillingService.js +13 -0
  106. package/build/dist/Server/Services/TelemetryUsageBillingService.js.map +1 -1
  107. package/build/dist/Server/Services/TraceAggregationService.js +136 -0
  108. package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
  109. package/build/dist/Server/Utils/Monitor/MonitorAlert.js +37 -19
  110. package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
  111. package/build/dist/Server/Utils/Monitor/MonitorClusterContext.js +27 -4
  112. package/build/dist/Server/Utils/Monitor/MonitorClusterContext.js.map +1 -1
  113. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +4 -2
  114. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  115. package/build/dist/Server/Utils/Monitor/MonitorIncident.js +39 -11
  116. package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
  117. package/build/dist/Server/Utils/Monitor/MonitorMaintenanceSuppression.js +8 -0
  118. package/build/dist/Server/Utils/Monitor/MonitorMaintenanceSuppression.js.map +1 -1
  119. package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js +17 -0
  120. package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js.map +1 -1
  121. package/build/dist/Server/Utils/Telemetry/IoTSnapshotScan.js +300 -0
  122. package/build/dist/Server/Utils/Telemetry/IoTSnapshotScan.js.map +1 -0
  123. package/build/dist/Types/Icon/IconProp.js +1 -0
  124. package/build/dist/Types/Icon/IconProp.js.map +1 -1
  125. package/build/dist/Types/Monitor/IotAlertTemplates.js +467 -0
  126. package/build/dist/Types/Monitor/IotAlertTemplates.js.map +1 -0
  127. package/build/dist/Types/Monitor/IotMetricCatalog.js +108 -0
  128. package/build/dist/Types/Monitor/IotMetricCatalog.js.map +1 -0
  129. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +12 -2
  130. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
  131. package/build/dist/Types/Monitor/MonitorStep.js +23 -0
  132. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  133. package/build/dist/Types/Monitor/MonitorStepIoTMonitor.js +32 -0
  134. package/build/dist/Types/Monitor/MonitorStepIoTMonitor.js.map +1 -0
  135. package/build/dist/Types/Monitor/MonitorType.js +11 -1
  136. package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
  137. package/build/dist/Types/Permission.js +204 -0
  138. package/build/dist/Types/Permission.js.map +1 -1
  139. package/build/dist/Types/StatusPage/StatusPageSubscriberNotificationEventType.js +2 -0
  140. package/build/dist/Types/StatusPage/StatusPageSubscriberNotificationEventType.js.map +1 -1
  141. package/build/dist/Types/Telemetry/ServiceType.js +1 -0
  142. package/build/dist/Types/Telemetry/ServiceType.js.map +1 -1
  143. package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js +3 -3
  144. package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js.map +1 -1
  145. package/build/dist/UI/Components/Icon/Icon.js +12 -2
  146. package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
  147. package/build/dist/UI/Components/Page/Page.js +1 -2
  148. package/build/dist/UI/Components/Page/Page.js.map +1 -1
  149. package/package.json +1 -1
@@ -0,0 +1,485 @@
1
+ import IoTFleet from "./IoTFleet";
2
+ import Project from "./Project";
3
+ import Team from "./Team";
4
+ import User from "./User";
5
+ import BaseModel from "./DatabaseBaseModel/DatabaseBaseModel";
6
+ import Route from "../../Types/API/Route";
7
+ import ColumnAccessControl from "../../Types/Database/AccessControl/ColumnAccessControl";
8
+ import TableAccessControl from "../../Types/Database/AccessControl/TableAccessControl";
9
+ import ColumnType from "../../Types/Database/ColumnType";
10
+ import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
11
+ import EnableDocumentation from "../../Types/Database/EnableDocumentation";
12
+ import EnableWorkflow from "../../Types/Database/EnableWorkflow";
13
+ import TableColumn from "../../Types/Database/TableColumn";
14
+ import TableColumnType from "../../Types/Database/TableColumnType";
15
+ import TableMetadata from "../../Types/Database/TableMetadata";
16
+ import TenantColumn from "../../Types/Database/TenantColumn";
17
+ import IconProp from "../../Types/Icon/IconProp";
18
+ import ObjectID from "../../Types/ObjectID";
19
+ import Permission from "../../Types/Permission";
20
+ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
21
+
22
+ @EnableDocumentation()
23
+ @TenantColumn("projectId")
24
+ @TableAccessControl({
25
+ create: [
26
+ Permission.ProjectOwner,
27
+ Permission.ProjectAdmin,
28
+ Permission.ProjectMember,
29
+ Permission.SettingsAdmin,
30
+ Permission.SettingsMember,
31
+ Permission.CreateIoTFleetOwnerTeam,
32
+ ],
33
+ read: [
34
+ Permission.ProjectOwner,
35
+ Permission.ProjectAdmin,
36
+ Permission.ProjectMember,
37
+ Permission.Viewer,
38
+ Permission.SettingsAdmin,
39
+ Permission.SettingsMember,
40
+ Permission.SettingsViewer,
41
+ Permission.ReadIoTFleetOwnerTeam,
42
+ ],
43
+ delete: [
44
+ Permission.ProjectOwner,
45
+ Permission.ProjectAdmin,
46
+ Permission.ProjectMember,
47
+ Permission.SettingsAdmin,
48
+ Permission.SettingsMember,
49
+ Permission.DeleteIoTFleetOwnerTeam,
50
+ ],
51
+ update: [
52
+ Permission.ProjectOwner,
53
+ Permission.ProjectAdmin,
54
+ Permission.ProjectMember,
55
+ Permission.SettingsAdmin,
56
+ Permission.SettingsMember,
57
+ Permission.EditIoTFleetOwnerTeam,
58
+ ],
59
+ })
60
+ @EnableWorkflow({
61
+ create: true,
62
+ delete: true,
63
+ update: true,
64
+ read: true,
65
+ })
66
+ @CrudApiEndpoint(new Route("/iot-fleet-owner-team"))
67
+ @TableMetadata({
68
+ tableName: "IoTFleetOwnerTeam",
69
+ singularName: "IoT Fleet Team Owner",
70
+ pluralName: "IoT Fleet Team Owners",
71
+ icon: IconProp.Cube,
72
+ tableDescription: "Add teams as owners to your IoT fleets.",
73
+ })
74
+ @Entity({
75
+ name: "IoTFleetOwnerTeam",
76
+ })
77
+ export default class IoTFleetOwnerTeam extends BaseModel {
78
+ @ColumnAccessControl({
79
+ create: [
80
+ Permission.ProjectOwner,
81
+ Permission.ProjectAdmin,
82
+ Permission.ProjectMember,
83
+ Permission.SettingsAdmin,
84
+ Permission.SettingsMember,
85
+ Permission.CreateIoTFleetOwnerTeam,
86
+ ],
87
+ read: [
88
+ Permission.ProjectOwner,
89
+ Permission.ProjectAdmin,
90
+ Permission.ProjectMember,
91
+ Permission.Viewer,
92
+ Permission.SettingsAdmin,
93
+ Permission.SettingsMember,
94
+ Permission.SettingsViewer,
95
+ Permission.ReadIoTFleetOwnerTeam,
96
+ ],
97
+ update: [],
98
+ })
99
+ @TableColumn({
100
+ manyToOneRelationColumn: "projectId",
101
+ type: TableColumnType.Entity,
102
+ modelType: Project,
103
+ title: "Project",
104
+ description: "Relation to Project Resource in which this object belongs",
105
+ })
106
+ @ManyToOne(
107
+ () => {
108
+ return Project;
109
+ },
110
+ {
111
+ eager: false,
112
+ nullable: false,
113
+ onDelete: "CASCADE",
114
+ orphanedRowAction: "nullify",
115
+ },
116
+ )
117
+ @JoinColumn({ name: "projectId" })
118
+ public project?: Project = undefined;
119
+
120
+ @ColumnAccessControl({
121
+ create: [
122
+ Permission.ProjectOwner,
123
+ Permission.ProjectAdmin,
124
+ Permission.ProjectMember,
125
+ Permission.SettingsAdmin,
126
+ Permission.SettingsMember,
127
+ Permission.CreateIoTFleetOwnerTeam,
128
+ ],
129
+ read: [
130
+ Permission.ProjectOwner,
131
+ Permission.ProjectAdmin,
132
+ Permission.ProjectMember,
133
+ Permission.Viewer,
134
+ Permission.SettingsAdmin,
135
+ Permission.SettingsMember,
136
+ Permission.SettingsViewer,
137
+ Permission.ReadIoTFleetOwnerTeam,
138
+ ],
139
+ update: [],
140
+ })
141
+ @Index()
142
+ @TableColumn({
143
+ type: TableColumnType.ObjectID,
144
+ required: true,
145
+ canReadOnRelationQuery: true,
146
+ title: "Project ID",
147
+ description: "ID of your OneUptime Project in which this object belongs",
148
+ })
149
+ @Column({
150
+ type: ColumnType.ObjectID,
151
+ nullable: false,
152
+ transformer: ObjectID.getDatabaseTransformer(),
153
+ })
154
+ public projectId?: ObjectID = undefined;
155
+
156
+ @ColumnAccessControl({
157
+ create: [
158
+ Permission.ProjectOwner,
159
+ Permission.ProjectAdmin,
160
+ Permission.ProjectMember,
161
+ Permission.SettingsAdmin,
162
+ Permission.SettingsMember,
163
+ Permission.CreateIoTFleetOwnerTeam,
164
+ ],
165
+ read: [
166
+ Permission.ProjectOwner,
167
+ Permission.ProjectAdmin,
168
+ Permission.ProjectMember,
169
+ Permission.Viewer,
170
+ Permission.SettingsAdmin,
171
+ Permission.SettingsMember,
172
+ Permission.SettingsViewer,
173
+ Permission.ReadIoTFleetOwnerTeam,
174
+ ],
175
+ update: [],
176
+ })
177
+ @TableColumn({
178
+ manyToOneRelationColumn: "teamId",
179
+ type: TableColumnType.Entity,
180
+ modelType: Team,
181
+ title: "Team",
182
+ description:
183
+ "Team that is the owner. All users in this team will receive notifications. ",
184
+ })
185
+ @ManyToOne(
186
+ () => {
187
+ return Team;
188
+ },
189
+ {
190
+ eager: false,
191
+ nullable: true,
192
+ onDelete: "CASCADE",
193
+ orphanedRowAction: "nullify",
194
+ },
195
+ )
196
+ @JoinColumn({ name: "teamId" })
197
+ public team?: Team = undefined;
198
+
199
+ @ColumnAccessControl({
200
+ create: [
201
+ Permission.ProjectOwner,
202
+ Permission.ProjectAdmin,
203
+ Permission.ProjectMember,
204
+ Permission.SettingsAdmin,
205
+ Permission.SettingsMember,
206
+ Permission.CreateIoTFleetOwnerTeam,
207
+ ],
208
+ read: [
209
+ Permission.ProjectOwner,
210
+ Permission.ProjectAdmin,
211
+ Permission.ProjectMember,
212
+ Permission.Viewer,
213
+ Permission.SettingsAdmin,
214
+ Permission.SettingsMember,
215
+ Permission.SettingsViewer,
216
+ Permission.ReadIoTFleetOwnerTeam,
217
+ ],
218
+ update: [],
219
+ })
220
+ @Index()
221
+ @TableColumn({
222
+ type: TableColumnType.ObjectID,
223
+ required: true,
224
+ canReadOnRelationQuery: true,
225
+ title: "Team ID",
226
+ description: "ID of your OneUptime Team in which this object belongs",
227
+ })
228
+ @Column({
229
+ type: ColumnType.ObjectID,
230
+ nullable: false,
231
+ transformer: ObjectID.getDatabaseTransformer(),
232
+ })
233
+ public teamId?: ObjectID = undefined;
234
+
235
+ @ColumnAccessControl({
236
+ create: [
237
+ Permission.ProjectOwner,
238
+ Permission.ProjectAdmin,
239
+ Permission.ProjectMember,
240
+ Permission.SettingsAdmin,
241
+ Permission.SettingsMember,
242
+ Permission.CreateIoTFleetOwnerTeam,
243
+ ],
244
+ read: [
245
+ Permission.ProjectOwner,
246
+ Permission.ProjectAdmin,
247
+ Permission.ProjectMember,
248
+ Permission.Viewer,
249
+ Permission.SettingsAdmin,
250
+ Permission.SettingsMember,
251
+ Permission.SettingsViewer,
252
+ Permission.ReadIoTFleetOwnerTeam,
253
+ ],
254
+ update: [],
255
+ })
256
+ @TableColumn({
257
+ manyToOneRelationColumn: "iotFleetId",
258
+ type: TableColumnType.Entity,
259
+ modelType: IoTFleet,
260
+ title: "IoT Fleet",
261
+ description: "Relation to IoT Fleet Resource in which this object belongs",
262
+ })
263
+ @ManyToOne(
264
+ () => {
265
+ return IoTFleet;
266
+ },
267
+ {
268
+ eager: false,
269
+ nullable: true,
270
+ onDelete: "CASCADE",
271
+ orphanedRowAction: "nullify",
272
+ },
273
+ )
274
+ @JoinColumn({ name: "iotFleetId" })
275
+ public iotFleet?: IoTFleet = undefined;
276
+
277
+ @ColumnAccessControl({
278
+ create: [
279
+ Permission.ProjectOwner,
280
+ Permission.ProjectAdmin,
281
+ Permission.ProjectMember,
282
+ Permission.SettingsAdmin,
283
+ Permission.SettingsMember,
284
+ Permission.CreateIoTFleetOwnerTeam,
285
+ ],
286
+ read: [
287
+ Permission.ProjectOwner,
288
+ Permission.ProjectAdmin,
289
+ Permission.ProjectMember,
290
+ Permission.Viewer,
291
+ Permission.SettingsAdmin,
292
+ Permission.SettingsMember,
293
+ Permission.SettingsViewer,
294
+ Permission.ReadIoTFleetOwnerTeam,
295
+ ],
296
+ update: [],
297
+ })
298
+ @Index()
299
+ @TableColumn({
300
+ type: TableColumnType.ObjectID,
301
+ required: true,
302
+ canReadOnRelationQuery: true,
303
+ title: "IoT Fleet ID",
304
+ description: "ID of your OneUptime IoT Fleet in which this object belongs",
305
+ })
306
+ @Column({
307
+ type: ColumnType.ObjectID,
308
+ nullable: false,
309
+ transformer: ObjectID.getDatabaseTransformer(),
310
+ })
311
+ public iotFleetId?: ObjectID = undefined;
312
+
313
+ @ColumnAccessControl({
314
+ create: [
315
+ Permission.ProjectOwner,
316
+ Permission.ProjectAdmin,
317
+ Permission.ProjectMember,
318
+ Permission.SettingsAdmin,
319
+ Permission.SettingsMember,
320
+ Permission.CreateIoTFleetOwnerTeam,
321
+ ],
322
+ read: [
323
+ Permission.ProjectOwner,
324
+ Permission.ProjectAdmin,
325
+ Permission.ProjectMember,
326
+ Permission.Viewer,
327
+ Permission.SettingsAdmin,
328
+ Permission.SettingsMember,
329
+ Permission.SettingsViewer,
330
+ Permission.ReadIoTFleetOwnerTeam,
331
+ ],
332
+ update: [],
333
+ })
334
+ @TableColumn({
335
+ manyToOneRelationColumn: "createdByUserId",
336
+ type: TableColumnType.Entity,
337
+ modelType: User,
338
+ title: "Created by User",
339
+ description:
340
+ "Relation to User who created this object (if this object was created by a User)",
341
+ })
342
+ @ManyToOne(
343
+ () => {
344
+ return User;
345
+ },
346
+ {
347
+ eager: false,
348
+ nullable: true,
349
+ onDelete: "SET NULL",
350
+ orphanedRowAction: "nullify",
351
+ },
352
+ )
353
+ @JoinColumn({ name: "createdByUserId" })
354
+ public createdByUser?: User = undefined;
355
+
356
+ @ColumnAccessControl({
357
+ create: [
358
+ Permission.ProjectOwner,
359
+ Permission.ProjectAdmin,
360
+ Permission.ProjectMember,
361
+ Permission.SettingsAdmin,
362
+ Permission.SettingsMember,
363
+ Permission.CreateIoTFleetOwnerTeam,
364
+ ],
365
+ read: [
366
+ Permission.ProjectOwner,
367
+ Permission.ProjectAdmin,
368
+ Permission.ProjectMember,
369
+ Permission.Viewer,
370
+ Permission.SettingsAdmin,
371
+ Permission.SettingsMember,
372
+ Permission.SettingsViewer,
373
+ Permission.ReadIoTFleetOwnerTeam,
374
+ ],
375
+ update: [],
376
+ })
377
+ @TableColumn({
378
+ type: TableColumnType.ObjectID,
379
+ title: "Created by User ID",
380
+ description:
381
+ "User ID who created this object (if this object was created by a User)",
382
+ })
383
+ @Column({
384
+ type: ColumnType.ObjectID,
385
+ nullable: true,
386
+ transformer: ObjectID.getDatabaseTransformer(),
387
+ })
388
+ public createdByUserId?: ObjectID = undefined;
389
+
390
+ @ColumnAccessControl({
391
+ create: [],
392
+ read: [
393
+ Permission.ProjectOwner,
394
+ Permission.ProjectAdmin,
395
+ Permission.ProjectMember,
396
+ Permission.Viewer,
397
+ Permission.SettingsAdmin,
398
+ Permission.SettingsMember,
399
+ Permission.SettingsViewer,
400
+ Permission.ReadIoTFleetOwnerTeam,
401
+ ],
402
+ update: [],
403
+ })
404
+ @TableColumn({
405
+ manyToOneRelationColumn: "deletedByUserId",
406
+ type: TableColumnType.Entity,
407
+ title: "Deleted by User",
408
+ modelType: User,
409
+ description:
410
+ "Relation to User who deleted this object (if this object was deleted by a User)",
411
+ })
412
+ @ManyToOne(
413
+ () => {
414
+ return User;
415
+ },
416
+ {
417
+ cascade: false,
418
+ eager: false,
419
+ nullable: true,
420
+ onDelete: "SET NULL",
421
+ orphanedRowAction: "nullify",
422
+ },
423
+ )
424
+ @JoinColumn({ name: "deletedByUserId" })
425
+ public deletedByUser?: User = undefined;
426
+
427
+ @ColumnAccessControl({
428
+ create: [],
429
+ read: [
430
+ Permission.ProjectOwner,
431
+ Permission.ProjectAdmin,
432
+ Permission.ProjectMember,
433
+ Permission.Viewer,
434
+ Permission.SettingsAdmin,
435
+ Permission.SettingsMember,
436
+ Permission.SettingsViewer,
437
+ Permission.ReadIoTFleetOwnerTeam,
438
+ ],
439
+ update: [],
440
+ })
441
+ @TableColumn({
442
+ type: TableColumnType.ObjectID,
443
+ title: "Deleted by User ID",
444
+ description:
445
+ "User ID who deleted this object (if this object was deleted by a User)",
446
+ })
447
+ @Column({
448
+ type: ColumnType.ObjectID,
449
+ nullable: true,
450
+ transformer: ObjectID.getDatabaseTransformer(),
451
+ })
452
+ public deletedByUserId?: ObjectID = undefined;
453
+
454
+ @ColumnAccessControl({
455
+ create: [],
456
+ read: [
457
+ Permission.ProjectOwner,
458
+ Permission.ProjectAdmin,
459
+ Permission.ProjectMember,
460
+ Permission.Viewer,
461
+ Permission.SettingsAdmin,
462
+ Permission.SettingsMember,
463
+ Permission.SettingsViewer,
464
+ Permission.ReadIoTFleetOwnerTeam,
465
+ ],
466
+ update: [],
467
+ })
468
+ @Index()
469
+ @TableColumn({
470
+ type: TableColumnType.Boolean,
471
+ computed: true,
472
+ hideColumnInDocumentation: true,
473
+ required: true,
474
+ isDefaultValueColumn: true,
475
+ title: "Are Owners Notified",
476
+ description: "Are owners notified of this resource ownership?",
477
+ defaultValue: false,
478
+ })
479
+ @Column({
480
+ type: ColumnType.Boolean,
481
+ nullable: false,
482
+ default: false,
483
+ })
484
+ public isOwnerNotified?: boolean = undefined;
485
+ }