@oneuptime/common 10.3.0 → 10.4.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 (115) hide show
  1. package/Models/DatabaseModels/IncomingCallPolicyLabelRule.ts +522 -0
  2. package/Models/DatabaseModels/IncomingCallPolicyOwnerRule.ts +606 -0
  3. package/Models/DatabaseModels/IncomingCallPolicyOwnerTeam.ts +508 -0
  4. package/Models/DatabaseModels/IncomingCallPolicyOwnerUser.ts +507 -0
  5. package/Models/DatabaseModels/Index.ts +24 -0
  6. package/Models/DatabaseModels/OnCallDutyPolicyLabelRule.ts +522 -0
  7. package/Models/DatabaseModels/OnCallDutyPolicyOwnerRule.ts +606 -0
  8. package/Models/DatabaseModels/OnCallDutyPolicyScheduleLabelRule.ts +522 -0
  9. package/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerRule.ts +606 -0
  10. package/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerTeam.ts +508 -0
  11. package/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerUser.ts +507 -0
  12. package/Server/API/TelemetryAPI.ts +69 -0
  13. package/Server/Infrastructure/Postgres/SchemaMigrations/1778929624633-AddOnCallDutyPolicyScheduleOwners.ts +153 -0
  14. package/Server/Infrastructure/Postgres/SchemaMigrations/1778931537020-AddOnCallIncomingCallOwnersAndRules.ts +823 -0
  15. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +4 -0
  16. package/Server/Services/IncomingCallPolicyLabelRuleEngineService.ts +197 -0
  17. package/Server/Services/IncomingCallPolicyLabelRuleService.ts +10 -0
  18. package/Server/Services/IncomingCallPolicyOwnerRuleEngineService.ts +220 -0
  19. package/Server/Services/IncomingCallPolicyOwnerRuleService.ts +10 -0
  20. package/Server/Services/IncomingCallPolicyOwnerTeamService.ts +9 -0
  21. package/Server/Services/IncomingCallPolicyOwnerUserService.ts +9 -0
  22. package/Server/Services/IncomingCallPolicyService.ts +35 -0
  23. package/Server/Services/OnCallDutyPolicyLabelRuleEngineService.ts +191 -0
  24. package/Server/Services/OnCallDutyPolicyLabelRuleService.ts +10 -0
  25. package/Server/Services/OnCallDutyPolicyOwnerRuleEngineService.ts +214 -0
  26. package/Server/Services/OnCallDutyPolicyOwnerRuleService.ts +10 -0
  27. package/Server/Services/OnCallDutyPolicyScheduleLabelRuleEngineService.ts +200 -0
  28. package/Server/Services/OnCallDutyPolicyScheduleLabelRuleService.ts +10 -0
  29. package/Server/Services/OnCallDutyPolicyScheduleOwnerRuleEngineService.ts +223 -0
  30. package/Server/Services/OnCallDutyPolicyScheduleOwnerRuleService.ts +10 -0
  31. package/Server/Services/OnCallDutyPolicyScheduleOwnerTeamService.ts +9 -0
  32. package/Server/Services/OnCallDutyPolicyScheduleOwnerUserService.ts +9 -0
  33. package/Server/Services/OnCallDutyPolicyScheduleService.ts +32 -1
  34. package/Server/Services/OnCallDutyPolicyService.ts +21 -0
  35. package/Server/Services/ProfileAggregationService.ts +119 -0
  36. package/Server/Types/Database/Permissions/QueryPermission.ts +36 -0
  37. package/Types/Monitor/MonitorStep.ts +66 -0
  38. package/Types/Permission.ts +475 -0
  39. package/build/dist/Models/DatabaseModels/IncomingCallPolicyLabelRule.js +532 -0
  40. package/build/dist/Models/DatabaseModels/IncomingCallPolicyLabelRule.js.map +1 -0
  41. package/build/dist/Models/DatabaseModels/IncomingCallPolicyOwnerRule.js +615 -0
  42. package/build/dist/Models/DatabaseModels/IncomingCallPolicyOwnerRule.js.map +1 -0
  43. package/build/dist/Models/DatabaseModels/IncomingCallPolicyOwnerTeam.js +524 -0
  44. package/build/dist/Models/DatabaseModels/IncomingCallPolicyOwnerTeam.js.map +1 -0
  45. package/build/dist/Models/DatabaseModels/IncomingCallPolicyOwnerUser.js +523 -0
  46. package/build/dist/Models/DatabaseModels/IncomingCallPolicyOwnerUser.js.map +1 -0
  47. package/build/dist/Models/DatabaseModels/Index.js +22 -0
  48. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  49. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyLabelRule.js +532 -0
  50. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyLabelRule.js.map +1 -0
  51. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyOwnerRule.js +615 -0
  52. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyOwnerRule.js.map +1 -0
  53. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleLabelRule.js +532 -0
  54. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleLabelRule.js.map +1 -0
  55. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerRule.js +615 -0
  56. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerRule.js.map +1 -0
  57. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerTeam.js +524 -0
  58. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerTeam.js.map +1 -0
  59. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerUser.js +523 -0
  60. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerUser.js.map +1 -0
  61. package/build/dist/Server/API/TelemetryAPI.js +34 -0
  62. package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
  63. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1778929624633-AddOnCallDutyPolicyScheduleOwners.js +58 -0
  64. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1778929624633-AddOnCallDutyPolicyScheduleOwners.js.map +1 -0
  65. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1778931537020-AddOnCallIncomingCallOwnersAndRules.js +292 -0
  66. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1778931537020-AddOnCallIncomingCallOwnersAndRules.js.map +1 -0
  67. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +4 -0
  68. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  69. package/build/dist/Server/Services/IncomingCallPolicyLabelRuleEngineService.js +158 -0
  70. package/build/dist/Server/Services/IncomingCallPolicyLabelRuleEngineService.js.map +1 -0
  71. package/build/dist/Server/Services/IncomingCallPolicyLabelRuleService.js +9 -0
  72. package/build/dist/Server/Services/IncomingCallPolicyLabelRuleService.js.map +1 -0
  73. package/build/dist/Server/Services/IncomingCallPolicyOwnerRuleEngineService.js +181 -0
  74. package/build/dist/Server/Services/IncomingCallPolicyOwnerRuleEngineService.js.map +1 -0
  75. package/build/dist/Server/Services/IncomingCallPolicyOwnerRuleService.js +9 -0
  76. package/build/dist/Server/Services/IncomingCallPolicyOwnerRuleService.js.map +1 -0
  77. package/build/dist/Server/Services/IncomingCallPolicyOwnerTeamService.js +9 -0
  78. package/build/dist/Server/Services/IncomingCallPolicyOwnerTeamService.js.map +1 -0
  79. package/build/dist/Server/Services/IncomingCallPolicyOwnerUserService.js +9 -0
  80. package/build/dist/Server/Services/IncomingCallPolicyOwnerUserService.js.map +1 -0
  81. package/build/dist/Server/Services/IncomingCallPolicyService.js +38 -0
  82. package/build/dist/Server/Services/IncomingCallPolicyService.js.map +1 -1
  83. package/build/dist/Server/Services/OnCallDutyPolicyLabelRuleEngineService.js +157 -0
  84. package/build/dist/Server/Services/OnCallDutyPolicyLabelRuleEngineService.js.map +1 -0
  85. package/build/dist/Server/Services/OnCallDutyPolicyLabelRuleService.js +9 -0
  86. package/build/dist/Server/Services/OnCallDutyPolicyLabelRuleService.js.map +1 -0
  87. package/build/dist/Server/Services/OnCallDutyPolicyOwnerRuleEngineService.js +180 -0
  88. package/build/dist/Server/Services/OnCallDutyPolicyOwnerRuleEngineService.js.map +1 -0
  89. package/build/dist/Server/Services/OnCallDutyPolicyOwnerRuleService.js +9 -0
  90. package/build/dist/Server/Services/OnCallDutyPolicyOwnerRuleService.js.map +1 -0
  91. package/build/dist/Server/Services/OnCallDutyPolicyScheduleLabelRuleEngineService.js +158 -0
  92. package/build/dist/Server/Services/OnCallDutyPolicyScheduleLabelRuleEngineService.js.map +1 -0
  93. package/build/dist/Server/Services/OnCallDutyPolicyScheduleLabelRuleService.js +9 -0
  94. package/build/dist/Server/Services/OnCallDutyPolicyScheduleLabelRuleService.js.map +1 -0
  95. package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerRuleEngineService.js +181 -0
  96. package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerRuleEngineService.js.map +1 -0
  97. package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerRuleService.js +9 -0
  98. package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerRuleService.js.map +1 -0
  99. package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerTeamService.js +9 -0
  100. package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerTeamService.js.map +1 -0
  101. package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerUserService.js +9 -0
  102. package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerUserService.js.map +1 -0
  103. package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js +21 -0
  104. package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js.map +1 -1
  105. package/build/dist/Server/Services/OnCallDutyPolicyService.js +17 -3
  106. package/build/dist/Server/Services/OnCallDutyPolicyService.js.map +1 -1
  107. package/build/dist/Server/Services/ProfileAggregationService.js +80 -0
  108. package/build/dist/Server/Services/ProfileAggregationService.js.map +1 -1
  109. package/build/dist/Server/Types/Database/Permissions/QueryPermission.js +25 -0
  110. package/build/dist/Server/Types/Database/Permissions/QueryPermission.js.map +1 -1
  111. package/build/dist/Types/Monitor/MonitorStep.js +42 -0
  112. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  113. package/build/dist/Types/Permission.js +415 -0
  114. package/build/dist/Types/Permission.js.map +1 -1
  115. package/package.json +1 -1
@@ -0,0 +1,606 @@
1
+ import Label from "./Label";
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 ColumnLength from "../../Types/Database/ColumnLength";
10
+ import ColumnType from "../../Types/Database/ColumnType";
11
+ import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
12
+ import EnableDocumentation from "../../Types/Database/EnableDocumentation";
13
+ import EnableWorkflow from "../../Types/Database/EnableWorkflow";
14
+ import TableColumn from "../../Types/Database/TableColumn";
15
+ import TableColumnType from "../../Types/Database/TableColumnType";
16
+ import TableMetadata from "../../Types/Database/TableMetadata";
17
+ import TenantColumn from "../../Types/Database/TenantColumn";
18
+ import IconProp from "../../Types/Icon/IconProp";
19
+ import ObjectID from "../../Types/ObjectID";
20
+ import Permission from "../../Types/Permission";
21
+ import {
22
+ Column,
23
+ Entity,
24
+ Index,
25
+ JoinColumn,
26
+ JoinTable,
27
+ ManyToMany,
28
+ ManyToOne,
29
+ } from "typeorm";
30
+
31
+ @EnableDocumentation()
32
+ @TenantColumn("projectId")
33
+ @TableAccessControl({
34
+ create: [
35
+ Permission.ProjectOwner,
36
+ Permission.ProjectAdmin,
37
+ Permission.CreateOnCallDutyPolicyOwnerRule,
38
+ ],
39
+ read: [
40
+ Permission.ProjectOwner,
41
+ Permission.ProjectAdmin,
42
+ Permission.ProjectMember,
43
+ Permission.Viewer,
44
+ Permission.ReadOnCallDutyPolicyOwnerRule,
45
+ Permission.ReadAllProjectResources,
46
+ ],
47
+ delete: [
48
+ Permission.ProjectOwner,
49
+ Permission.ProjectAdmin,
50
+ Permission.DeleteOnCallDutyPolicyOwnerRule,
51
+ ],
52
+ update: [
53
+ Permission.ProjectOwner,
54
+ Permission.ProjectAdmin,
55
+ Permission.EditOnCallDutyPolicyOwnerRule,
56
+ ],
57
+ })
58
+ @CrudApiEndpoint(new Route("/on-call-duty-policy-owner-rule"))
59
+ @Entity({
60
+ name: "OnCallDutyPolicyOwnerRule",
61
+ })
62
+ @EnableWorkflow({
63
+ create: true,
64
+ delete: true,
65
+ update: true,
66
+ read: true,
67
+ })
68
+ @TableMetadata({
69
+ tableName: "OnCallDutyPolicyOwnerRule",
70
+ singularName: "On-Call Policy Owner Rule",
71
+ pluralName: "On-Call Policy Owner Rules",
72
+ icon: IconProp.User,
73
+ tableDescription:
74
+ "Configure rules for automatically assigning owner users and teams when matching on-call policies are created",
75
+ })
76
+ export default class OnCallDutyPolicyOwnerRule extends BaseModel {
77
+ @ColumnAccessControl({
78
+ create: [
79
+ Permission.ProjectOwner,
80
+ Permission.ProjectAdmin,
81
+ Permission.CreateOnCallDutyPolicyOwnerRule,
82
+ ],
83
+ read: [
84
+ Permission.ProjectOwner,
85
+ Permission.ProjectAdmin,
86
+ Permission.ProjectMember,
87
+ Permission.Viewer,
88
+ Permission.ReadOnCallDutyPolicyOwnerRule,
89
+ Permission.ReadAllProjectResources,
90
+ ],
91
+ update: [],
92
+ })
93
+ @TableColumn({
94
+ manyToOneRelationColumn: "projectId",
95
+ type: TableColumnType.Entity,
96
+ modelType: Project,
97
+ title: "Project",
98
+ description: "Relation to Project Resource in which this object belongs",
99
+ })
100
+ @ManyToOne(
101
+ () => {
102
+ return Project;
103
+ },
104
+ {
105
+ eager: false,
106
+ nullable: true,
107
+ onDelete: "CASCADE",
108
+ orphanedRowAction: "nullify",
109
+ },
110
+ )
111
+ @JoinColumn({ name: "projectId" })
112
+ public project?: Project = undefined;
113
+
114
+ @ColumnAccessControl({
115
+ create: [
116
+ Permission.ProjectOwner,
117
+ Permission.ProjectAdmin,
118
+ Permission.CreateOnCallDutyPolicyOwnerRule,
119
+ ],
120
+ read: [
121
+ Permission.ProjectOwner,
122
+ Permission.ProjectAdmin,
123
+ Permission.ProjectMember,
124
+ Permission.Viewer,
125
+ Permission.ReadOnCallDutyPolicyOwnerRule,
126
+ Permission.ReadAllProjectResources,
127
+ ],
128
+ update: [],
129
+ })
130
+ @Index()
131
+ @TableColumn({
132
+ type: TableColumnType.ObjectID,
133
+ required: true,
134
+ canReadOnRelationQuery: true,
135
+ title: "Project ID",
136
+ description: "ID of your OneUptime Project in which this object belongs",
137
+ })
138
+ @Column({
139
+ type: ColumnType.ObjectID,
140
+ nullable: false,
141
+ transformer: ObjectID.getDatabaseTransformer(),
142
+ })
143
+ public projectId?: ObjectID = undefined;
144
+
145
+ @ColumnAccessControl({
146
+ create: [
147
+ Permission.ProjectOwner,
148
+ Permission.ProjectAdmin,
149
+ Permission.CreateOnCallDutyPolicyOwnerRule,
150
+ ],
151
+ read: [
152
+ Permission.ProjectOwner,
153
+ Permission.ProjectAdmin,
154
+ Permission.ProjectMember,
155
+ Permission.Viewer,
156
+ Permission.ReadOnCallDutyPolicyOwnerRule,
157
+ Permission.ReadAllProjectResources,
158
+ ],
159
+ update: [
160
+ Permission.ProjectOwner,
161
+ Permission.ProjectAdmin,
162
+ Permission.EditOnCallDutyPolicyOwnerRule,
163
+ ],
164
+ })
165
+ @Index()
166
+ @TableColumn({
167
+ required: true,
168
+ type: TableColumnType.ShortText,
169
+ canReadOnRelationQuery: true,
170
+ title: "Name",
171
+ description: "Name of this on-call policy owner rule",
172
+ })
173
+ @Column({
174
+ nullable: false,
175
+ type: ColumnType.ShortText,
176
+ length: ColumnLength.ShortText,
177
+ })
178
+ public name?: string = undefined;
179
+
180
+ @ColumnAccessControl({
181
+ create: [
182
+ Permission.ProjectOwner,
183
+ Permission.ProjectAdmin,
184
+ Permission.CreateOnCallDutyPolicyOwnerRule,
185
+ ],
186
+ read: [
187
+ Permission.ProjectOwner,
188
+ Permission.ProjectAdmin,
189
+ Permission.ProjectMember,
190
+ Permission.Viewer,
191
+ Permission.ReadOnCallDutyPolicyOwnerRule,
192
+ Permission.ReadAllProjectResources,
193
+ ],
194
+ update: [
195
+ Permission.ProjectOwner,
196
+ Permission.ProjectAdmin,
197
+ Permission.EditOnCallDutyPolicyOwnerRule,
198
+ ],
199
+ })
200
+ @TableColumn({
201
+ required: false,
202
+ type: TableColumnType.LongText,
203
+ title: "Description",
204
+ description: "Description of this on-call policy owner rule",
205
+ })
206
+ @Column({
207
+ nullable: true,
208
+ type: ColumnType.LongText,
209
+ length: ColumnLength.LongText,
210
+ })
211
+ public description?: string = undefined;
212
+
213
+ @ColumnAccessControl({
214
+ create: [
215
+ Permission.ProjectOwner,
216
+ Permission.ProjectAdmin,
217
+ Permission.CreateOnCallDutyPolicyOwnerRule,
218
+ ],
219
+ read: [
220
+ Permission.ProjectOwner,
221
+ Permission.ProjectAdmin,
222
+ Permission.ProjectMember,
223
+ Permission.Viewer,
224
+ Permission.ReadOnCallDutyPolicyOwnerRule,
225
+ Permission.ReadAllProjectResources,
226
+ ],
227
+ update: [
228
+ Permission.ProjectOwner,
229
+ Permission.ProjectAdmin,
230
+ Permission.EditOnCallDutyPolicyOwnerRule,
231
+ ],
232
+ })
233
+ @Index()
234
+ @TableColumn({
235
+ required: true,
236
+ type: TableColumnType.Boolean,
237
+ title: "Is Enabled",
238
+ description: "Whether this rule is enabled",
239
+ defaultValue: true,
240
+ isDefaultValueColumn: true,
241
+ })
242
+ @Column({
243
+ type: ColumnType.Boolean,
244
+ nullable: false,
245
+ default: true,
246
+ })
247
+ public isEnabled?: boolean = undefined;
248
+
249
+ @ColumnAccessControl({
250
+ create: [
251
+ Permission.ProjectOwner,
252
+ Permission.ProjectAdmin,
253
+ Permission.CreateOnCallDutyPolicyOwnerRule,
254
+ ],
255
+ read: [
256
+ Permission.ProjectOwner,
257
+ Permission.ProjectAdmin,
258
+ Permission.ProjectMember,
259
+ Permission.Viewer,
260
+ Permission.ReadOnCallDutyPolicyOwnerRule,
261
+ Permission.ReadAllProjectResources,
262
+ ],
263
+ update: [
264
+ Permission.ProjectOwner,
265
+ Permission.ProjectAdmin,
266
+ Permission.EditOnCallDutyPolicyOwnerRule,
267
+ ],
268
+ })
269
+ @TableColumn({
270
+ required: false,
271
+ type: TableColumnType.Boolean,
272
+ title: "Notify Owners",
273
+ description:
274
+ "Send notifications to owner users and teams when they are added by this rule",
275
+ defaultValue: true,
276
+ isDefaultValueColumn: true,
277
+ })
278
+ @Column({
279
+ type: ColumnType.Boolean,
280
+ nullable: false,
281
+ default: true,
282
+ })
283
+ public notifyOwners?: boolean = undefined;
284
+
285
+ @ColumnAccessControl({
286
+ create: [
287
+ Permission.ProjectOwner,
288
+ Permission.ProjectAdmin,
289
+ Permission.CreateOnCallDutyPolicyOwnerRule,
290
+ ],
291
+ read: [
292
+ Permission.ProjectOwner,
293
+ Permission.ProjectAdmin,
294
+ Permission.ProjectMember,
295
+ Permission.Viewer,
296
+ Permission.ReadOnCallDutyPolicyOwnerRule,
297
+ Permission.ReadAllProjectResources,
298
+ ],
299
+ update: [
300
+ Permission.ProjectOwner,
301
+ Permission.ProjectAdmin,
302
+ Permission.EditOnCallDutyPolicyOwnerRule,
303
+ ],
304
+ })
305
+ @TableColumn({
306
+ required: false,
307
+ type: TableColumnType.EntityArray,
308
+ modelType: Label,
309
+ title: "On-Call Policy Labels",
310
+ description:
311
+ "Only trigger for on-call policies that have at least one of these labels. Leave empty to match regardless of labels.",
312
+ })
313
+ @ManyToMany(
314
+ () => {
315
+ return Label;
316
+ },
317
+ { eager: false },
318
+ )
319
+ @JoinTable({
320
+ name: "OnCallDutyPolicyOwnerRuleMatchLabel",
321
+ inverseJoinColumn: {
322
+ name: "labelId",
323
+ referencedColumnName: "_id",
324
+ },
325
+ joinColumn: {
326
+ name: "onCallDutyPolicyOwnerRuleId",
327
+ referencedColumnName: "_id",
328
+ },
329
+ })
330
+ public onCallDutyPolicyLabels?: Array<Label> = undefined;
331
+
332
+ @ColumnAccessControl({
333
+ create: [
334
+ Permission.ProjectOwner,
335
+ Permission.ProjectAdmin,
336
+ Permission.CreateOnCallDutyPolicyOwnerRule,
337
+ ],
338
+ read: [
339
+ Permission.ProjectOwner,
340
+ Permission.ProjectAdmin,
341
+ Permission.ProjectMember,
342
+ Permission.Viewer,
343
+ Permission.ReadOnCallDutyPolicyOwnerRule,
344
+ Permission.ReadAllProjectResources,
345
+ ],
346
+ update: [
347
+ Permission.ProjectOwner,
348
+ Permission.ProjectAdmin,
349
+ Permission.EditOnCallDutyPolicyOwnerRule,
350
+ ],
351
+ })
352
+ @TableColumn({
353
+ required: false,
354
+ type: TableColumnType.LongText,
355
+ title: "On-Call Policy Name Pattern",
356
+ description:
357
+ "Regex (case-insensitive) matched against the on-call policy name. Leave empty to match any name.",
358
+ })
359
+ @Column({
360
+ type: ColumnType.LongText,
361
+ nullable: true,
362
+ length: ColumnLength.LongText,
363
+ })
364
+ public onCallDutyPolicyNamePattern?: string = undefined;
365
+
366
+ @ColumnAccessControl({
367
+ create: [
368
+ Permission.ProjectOwner,
369
+ Permission.ProjectAdmin,
370
+ Permission.CreateOnCallDutyPolicyOwnerRule,
371
+ ],
372
+ read: [
373
+ Permission.ProjectOwner,
374
+ Permission.ProjectAdmin,
375
+ Permission.ProjectMember,
376
+ Permission.Viewer,
377
+ Permission.ReadOnCallDutyPolicyOwnerRule,
378
+ Permission.ReadAllProjectResources,
379
+ ],
380
+ update: [
381
+ Permission.ProjectOwner,
382
+ Permission.ProjectAdmin,
383
+ Permission.EditOnCallDutyPolicyOwnerRule,
384
+ ],
385
+ })
386
+ @TableColumn({
387
+ required: false,
388
+ type: TableColumnType.LongText,
389
+ title: "On-Call Policy Description Pattern",
390
+ description:
391
+ "Regex (case-insensitive) matched against the on-call policy description. Leave empty to match any description.",
392
+ })
393
+ @Column({
394
+ type: ColumnType.LongText,
395
+ nullable: true,
396
+ length: ColumnLength.LongText,
397
+ })
398
+ public onCallDutyPolicyDescriptionPattern?: string = undefined;
399
+
400
+ @ColumnAccessControl({
401
+ create: [
402
+ Permission.ProjectOwner,
403
+ Permission.ProjectAdmin,
404
+ Permission.CreateOnCallDutyPolicyOwnerRule,
405
+ ],
406
+ read: [
407
+ Permission.ProjectOwner,
408
+ Permission.ProjectAdmin,
409
+ Permission.ProjectMember,
410
+ Permission.Viewer,
411
+ Permission.ReadOnCallDutyPolicyOwnerRule,
412
+ Permission.ReadAllProjectResources,
413
+ ],
414
+ update: [
415
+ Permission.ProjectOwner,
416
+ Permission.ProjectAdmin,
417
+ Permission.EditOnCallDutyPolicyOwnerRule,
418
+ ],
419
+ })
420
+ @TableColumn({
421
+ required: false,
422
+ type: TableColumnType.EntityArray,
423
+ modelType: User,
424
+ title: "Owner Users",
425
+ description:
426
+ "Users to add as owners on the on-call policy when this rule matches.",
427
+ })
428
+ @ManyToMany(
429
+ () => {
430
+ return User;
431
+ },
432
+ { eager: false },
433
+ )
434
+ @JoinTable({
435
+ name: "OnCallDutyPolicyOwnerRuleOwnerUser",
436
+ inverseJoinColumn: {
437
+ name: "userId",
438
+ referencedColumnName: "_id",
439
+ },
440
+ joinColumn: {
441
+ name: "onCallDutyPolicyOwnerRuleId",
442
+ referencedColumnName: "_id",
443
+ },
444
+ })
445
+ public ownerUsers?: Array<User> = undefined;
446
+
447
+ @ColumnAccessControl({
448
+ create: [
449
+ Permission.ProjectOwner,
450
+ Permission.ProjectAdmin,
451
+ Permission.CreateOnCallDutyPolicyOwnerRule,
452
+ ],
453
+ read: [
454
+ Permission.ProjectOwner,
455
+ Permission.ProjectAdmin,
456
+ Permission.ProjectMember,
457
+ Permission.Viewer,
458
+ Permission.ReadOnCallDutyPolicyOwnerRule,
459
+ Permission.ReadAllProjectResources,
460
+ ],
461
+ update: [
462
+ Permission.ProjectOwner,
463
+ Permission.ProjectAdmin,
464
+ Permission.EditOnCallDutyPolicyOwnerRule,
465
+ ],
466
+ })
467
+ @TableColumn({
468
+ required: false,
469
+ type: TableColumnType.EntityArray,
470
+ modelType: Team,
471
+ title: "Owner Teams",
472
+ description:
473
+ "Teams to add as owners on the on-call policy when this rule matches.",
474
+ })
475
+ @ManyToMany(
476
+ () => {
477
+ return Team;
478
+ },
479
+ { eager: false },
480
+ )
481
+ @JoinTable({
482
+ name: "OnCallDutyPolicyOwnerRuleOwnerTeam",
483
+ inverseJoinColumn: {
484
+ name: "teamId",
485
+ referencedColumnName: "_id",
486
+ },
487
+ joinColumn: {
488
+ name: "onCallDutyPolicyOwnerRuleId",
489
+ referencedColumnName: "_id",
490
+ },
491
+ })
492
+ public ownerTeams?: Array<Team> = undefined;
493
+
494
+ @ColumnAccessControl({
495
+ create: [
496
+ Permission.ProjectOwner,
497
+ Permission.ProjectAdmin,
498
+ Permission.CreateOnCallDutyPolicyOwnerRule,
499
+ ],
500
+ read: [
501
+ Permission.ProjectOwner,
502
+ Permission.ProjectAdmin,
503
+ Permission.ProjectMember,
504
+ Permission.Viewer,
505
+ Permission.ReadOnCallDutyPolicyOwnerRule,
506
+ Permission.ReadAllProjectResources,
507
+ ],
508
+ update: [],
509
+ })
510
+ @TableColumn({
511
+ manyToOneRelationColumn: "createdByUserId",
512
+ type: TableColumnType.Entity,
513
+ modelType: User,
514
+ title: "Created by User",
515
+ description:
516
+ "Relation to User who created this object (if this object was created by a User)",
517
+ })
518
+ @ManyToOne(
519
+ () => {
520
+ return User;
521
+ },
522
+ {
523
+ eager: false,
524
+ nullable: true,
525
+ onDelete: "SET NULL",
526
+ orphanedRowAction: "nullify",
527
+ },
528
+ )
529
+ @JoinColumn({ name: "createdByUserId" })
530
+ public createdByUser?: User = undefined;
531
+
532
+ @ColumnAccessControl({
533
+ create: [
534
+ Permission.ProjectOwner,
535
+ Permission.ProjectAdmin,
536
+ Permission.CreateOnCallDutyPolicyOwnerRule,
537
+ ],
538
+ read: [
539
+ Permission.ProjectOwner,
540
+ Permission.ProjectAdmin,
541
+ Permission.ProjectMember,
542
+ Permission.Viewer,
543
+ Permission.ReadOnCallDutyPolicyOwnerRule,
544
+ Permission.ReadAllProjectResources,
545
+ ],
546
+ update: [],
547
+ })
548
+ @TableColumn({
549
+ type: TableColumnType.ObjectID,
550
+ title: "Created by User ID",
551
+ description:
552
+ "User ID who created this object (if this object was created by a User)",
553
+ })
554
+ @Column({
555
+ type: ColumnType.ObjectID,
556
+ nullable: true,
557
+ transformer: ObjectID.getDatabaseTransformer(),
558
+ })
559
+ public createdByUserId?: ObjectID = undefined;
560
+
561
+ @ColumnAccessControl({
562
+ create: [],
563
+ read: [],
564
+ update: [],
565
+ })
566
+ @TableColumn({
567
+ manyToOneRelationColumn: "deletedByUserId",
568
+ type: TableColumnType.Entity,
569
+ title: "Deleted by User",
570
+ modelType: User,
571
+ description:
572
+ "Relation to User who deleted this object (if this object was deleted by a User)",
573
+ })
574
+ @ManyToOne(
575
+ () => {
576
+ return User;
577
+ },
578
+ {
579
+ cascade: false,
580
+ eager: false,
581
+ nullable: true,
582
+ onDelete: "SET NULL",
583
+ orphanedRowAction: "nullify",
584
+ },
585
+ )
586
+ @JoinColumn({ name: "deletedByUserId" })
587
+ public deletedByUser?: User = undefined;
588
+
589
+ @ColumnAccessControl({
590
+ create: [],
591
+ read: [],
592
+ update: [],
593
+ })
594
+ @TableColumn({
595
+ type: TableColumnType.ObjectID,
596
+ title: "Deleted by User ID",
597
+ description:
598
+ "User ID who deleted this object (if this object was deleted by a User)",
599
+ })
600
+ @Column({
601
+ type: ColumnType.ObjectID,
602
+ nullable: true,
603
+ transformer: ObjectID.getDatabaseTransformer(),
604
+ })
605
+ public deletedByUserId?: ObjectID = undefined;
606
+ }