@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,508 @@
1
+ import OnCallDutyPolicySchedule from "./OnCallDutyPolicySchedule";
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 { PlanType } from "../../Types/Billing/SubscriptionPlan";
8
+ import ColumnAccessControl from "../../Types/Database/AccessControl/ColumnAccessControl";
9
+ import TableAccessControl from "../../Types/Database/AccessControl/TableAccessControl";
10
+ import TableBillingAccessControl from "../../Types/Database/AccessControl/TableBillingAccessControl";
11
+ import ColumnType from "../../Types/Database/ColumnType";
12
+ import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
13
+ import EnableDocumentation from "../../Types/Database/EnableDocumentation";
14
+ import EnableWorkflow from "../../Types/Database/EnableWorkflow";
15
+ import TableColumn from "../../Types/Database/TableColumn";
16
+ import TableColumnType from "../../Types/Database/TableColumnType";
17
+ import TableMetadata from "../../Types/Database/TableMetadata";
18
+ import TenantColumn from "../../Types/Database/TenantColumn";
19
+ import IconProp from "../../Types/Icon/IconProp";
20
+ import ObjectID from "../../Types/ObjectID";
21
+ import Permission from "../../Types/Permission";
22
+ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
23
+
24
+ @EnableDocumentation()
25
+ @TenantColumn("projectId")
26
+ @TableBillingAccessControl({
27
+ create: PlanType.Growth,
28
+ read: PlanType.Free,
29
+ update: PlanType.Growth,
30
+ delete: PlanType.Free,
31
+ })
32
+ @TableAccessControl({
33
+ create: [
34
+ Permission.ProjectOwner,
35
+ Permission.ProjectAdmin,
36
+ Permission.ProjectMember,
37
+ Permission.OnCallAdmin,
38
+ Permission.OnCallMember,
39
+ Permission.CreateOnCallDutyPolicyScheduleOwnerTeam,
40
+ ],
41
+ read: [
42
+ Permission.ProjectOwner,
43
+ Permission.ProjectAdmin,
44
+ Permission.ProjectMember,
45
+ Permission.Viewer,
46
+ Permission.OnCallAdmin,
47
+ Permission.OnCallMember,
48
+ Permission.OnCallViewer,
49
+ Permission.ReadOnCallDutyPolicyScheduleOwnerTeam,
50
+ Permission.ReadAllProjectResources,
51
+ ],
52
+ delete: [
53
+ Permission.ProjectOwner,
54
+ Permission.ProjectAdmin,
55
+ Permission.ProjectMember,
56
+ Permission.OnCallAdmin,
57
+ Permission.OnCallMember,
58
+ Permission.DeleteOnCallDutyPolicyScheduleOwnerTeam,
59
+ ],
60
+ update: [
61
+ Permission.ProjectOwner,
62
+ Permission.ProjectAdmin,
63
+ Permission.ProjectMember,
64
+ Permission.OnCallAdmin,
65
+ Permission.OnCallMember,
66
+ Permission.EditOnCallDutyPolicyScheduleOwnerTeam,
67
+ ],
68
+ })
69
+ @EnableWorkflow({
70
+ create: true,
71
+ delete: true,
72
+ update: true,
73
+ read: true,
74
+ })
75
+ @CrudApiEndpoint(new Route("/on-call-duty-policy-schedule-owner-team"))
76
+ @TableMetadata({
77
+ tableName: "OnCallDutyPolicyScheduleOwnerTeam",
78
+ singularName: "On-Call Schedule Team Owner",
79
+ pluralName: "On-Call Schedule Team Owners",
80
+ icon: IconProp.Calendar,
81
+ tableDescription: "Add teams as owners to your on-call schedules.",
82
+ })
83
+ @Entity({
84
+ name: "OnCallDutyPolicyScheduleOwnerTeam",
85
+ })
86
+ @Index(["onCallDutyPolicyScheduleId", "teamId", "projectId"])
87
+ export default class OnCallDutyPolicyScheduleOwnerTeam extends BaseModel {
88
+ @ColumnAccessControl({
89
+ create: [
90
+ Permission.ProjectOwner,
91
+ Permission.ProjectAdmin,
92
+ Permission.ProjectMember,
93
+ Permission.OnCallAdmin,
94
+ Permission.OnCallMember,
95
+ Permission.CreateOnCallDutyPolicyScheduleOwnerTeam,
96
+ ],
97
+ read: [
98
+ Permission.ProjectOwner,
99
+ Permission.ProjectAdmin,
100
+ Permission.ProjectMember,
101
+ Permission.Viewer,
102
+ Permission.OnCallAdmin,
103
+ Permission.OnCallMember,
104
+ Permission.OnCallViewer,
105
+ Permission.ReadOnCallDutyPolicyScheduleOwnerTeam,
106
+ Permission.ReadAllProjectResources,
107
+ ],
108
+ update: [],
109
+ })
110
+ @TableColumn({
111
+ manyToOneRelationColumn: "projectId",
112
+ type: TableColumnType.Entity,
113
+ modelType: Project,
114
+ title: "Project",
115
+ description: "Relation to Project Resource in which this object belongs",
116
+ })
117
+ @ManyToOne(
118
+ () => {
119
+ return Project;
120
+ },
121
+ {
122
+ eager: false,
123
+ nullable: false,
124
+ onDelete: "CASCADE",
125
+ orphanedRowAction: "nullify",
126
+ },
127
+ )
128
+ @JoinColumn({ name: "projectId" })
129
+ public project?: Project = undefined;
130
+
131
+ @ColumnAccessControl({
132
+ create: [
133
+ Permission.ProjectOwner,
134
+ Permission.ProjectAdmin,
135
+ Permission.ProjectMember,
136
+ Permission.OnCallAdmin,
137
+ Permission.OnCallMember,
138
+ Permission.CreateOnCallDutyPolicyScheduleOwnerTeam,
139
+ ],
140
+ read: [
141
+ Permission.ProjectOwner,
142
+ Permission.ProjectAdmin,
143
+ Permission.ProjectMember,
144
+ Permission.Viewer,
145
+ Permission.OnCallAdmin,
146
+ Permission.OnCallMember,
147
+ Permission.OnCallViewer,
148
+ Permission.ReadOnCallDutyPolicyScheduleOwnerTeam,
149
+ Permission.ReadAllProjectResources,
150
+ ],
151
+ update: [],
152
+ })
153
+ @Index()
154
+ @TableColumn({
155
+ type: TableColumnType.ObjectID,
156
+ required: true,
157
+ canReadOnRelationQuery: true,
158
+ title: "Project ID",
159
+ description: "ID of your OneUptime Project in which this object belongs",
160
+ })
161
+ @Column({
162
+ type: ColumnType.ObjectID,
163
+ nullable: false,
164
+ transformer: ObjectID.getDatabaseTransformer(),
165
+ })
166
+ public projectId?: ObjectID = undefined;
167
+
168
+ @ColumnAccessControl({
169
+ create: [
170
+ Permission.ProjectOwner,
171
+ Permission.ProjectAdmin,
172
+ Permission.ProjectMember,
173
+ Permission.OnCallAdmin,
174
+ Permission.OnCallMember,
175
+ Permission.CreateOnCallDutyPolicyScheduleOwnerTeam,
176
+ ],
177
+ read: [
178
+ Permission.ProjectOwner,
179
+ Permission.ProjectAdmin,
180
+ Permission.ProjectMember,
181
+ Permission.Viewer,
182
+ Permission.OnCallAdmin,
183
+ Permission.OnCallMember,
184
+ Permission.OnCallViewer,
185
+ Permission.ReadOnCallDutyPolicyScheduleOwnerTeam,
186
+ Permission.ReadAllProjectResources,
187
+ ],
188
+ update: [],
189
+ })
190
+ @TableColumn({
191
+ manyToOneRelationColumn: "teamId",
192
+ type: TableColumnType.Entity,
193
+ modelType: Team,
194
+ title: "Team",
195
+ description:
196
+ "Team that is the owner. All users in this team will receive notifications. ",
197
+ })
198
+ @ManyToOne(
199
+ () => {
200
+ return Team;
201
+ },
202
+ {
203
+ eager: false,
204
+ nullable: true,
205
+ onDelete: "CASCADE",
206
+ orphanedRowAction: "nullify",
207
+ },
208
+ )
209
+ @JoinColumn({ name: "teamId" })
210
+ public team?: Team = undefined;
211
+
212
+ @ColumnAccessControl({
213
+ create: [
214
+ Permission.ProjectOwner,
215
+ Permission.ProjectAdmin,
216
+ Permission.ProjectMember,
217
+ Permission.OnCallAdmin,
218
+ Permission.OnCallMember,
219
+ Permission.CreateOnCallDutyPolicyScheduleOwnerTeam,
220
+ ],
221
+ read: [
222
+ Permission.ProjectOwner,
223
+ Permission.ProjectAdmin,
224
+ Permission.ProjectMember,
225
+ Permission.Viewer,
226
+ Permission.OnCallAdmin,
227
+ Permission.OnCallMember,
228
+ Permission.OnCallViewer,
229
+ Permission.ReadOnCallDutyPolicyScheduleOwnerTeam,
230
+ Permission.ReadAllProjectResources,
231
+ ],
232
+ update: [],
233
+ })
234
+ @Index()
235
+ @TableColumn({
236
+ type: TableColumnType.ObjectID,
237
+ required: true,
238
+ canReadOnRelationQuery: true,
239
+ title: "Team ID",
240
+ description: "ID of your OneUptime Team in which this object belongs",
241
+ })
242
+ @Column({
243
+ type: ColumnType.ObjectID,
244
+ nullable: false,
245
+ transformer: ObjectID.getDatabaseTransformer(),
246
+ })
247
+ public teamId?: ObjectID = undefined;
248
+
249
+ @ColumnAccessControl({
250
+ create: [
251
+ Permission.ProjectOwner,
252
+ Permission.ProjectAdmin,
253
+ Permission.ProjectMember,
254
+ Permission.OnCallAdmin,
255
+ Permission.OnCallMember,
256
+ Permission.CreateOnCallDutyPolicyScheduleOwnerTeam,
257
+ ],
258
+ read: [
259
+ Permission.ProjectOwner,
260
+ Permission.ProjectAdmin,
261
+ Permission.ProjectMember,
262
+ Permission.Viewer,
263
+ Permission.OnCallAdmin,
264
+ Permission.OnCallMember,
265
+ Permission.OnCallViewer,
266
+ Permission.ReadOnCallDutyPolicyScheduleOwnerTeam,
267
+ Permission.ReadAllProjectResources,
268
+ ],
269
+ update: [],
270
+ })
271
+ @TableColumn({
272
+ manyToOneRelationColumn: "onCallDutyPolicyScheduleId",
273
+ type: TableColumnType.Entity,
274
+ modelType: OnCallDutyPolicySchedule,
275
+ title: "On-Call Schedule",
276
+ description:
277
+ "Relation to On-Call Schedule Resource in which this object belongs",
278
+ })
279
+ @ManyToOne(
280
+ () => {
281
+ return OnCallDutyPolicySchedule;
282
+ },
283
+ {
284
+ eager: false,
285
+ nullable: true,
286
+ onDelete: "CASCADE",
287
+ orphanedRowAction: "nullify",
288
+ },
289
+ )
290
+ @JoinColumn({ name: "onCallDutyPolicyScheduleId" })
291
+ public onCallDutyPolicySchedule?: OnCallDutyPolicySchedule = undefined;
292
+
293
+ @ColumnAccessControl({
294
+ create: [
295
+ Permission.ProjectOwner,
296
+ Permission.ProjectAdmin,
297
+ Permission.ProjectMember,
298
+ Permission.OnCallAdmin,
299
+ Permission.OnCallMember,
300
+ Permission.CreateOnCallDutyPolicyScheduleOwnerTeam,
301
+ ],
302
+ read: [
303
+ Permission.ProjectOwner,
304
+ Permission.ProjectAdmin,
305
+ Permission.ProjectMember,
306
+ Permission.Viewer,
307
+ Permission.OnCallAdmin,
308
+ Permission.OnCallMember,
309
+ Permission.OnCallViewer,
310
+ Permission.ReadOnCallDutyPolicyScheduleOwnerTeam,
311
+ Permission.ReadAllProjectResources,
312
+ ],
313
+ update: [],
314
+ })
315
+ @Index()
316
+ @TableColumn({
317
+ type: TableColumnType.ObjectID,
318
+ required: true,
319
+ canReadOnRelationQuery: true,
320
+ title: "On-Call Schedule ID",
321
+ description:
322
+ "ID of your OneUptime On-Call Schedule in which this object belongs",
323
+ })
324
+ @Column({
325
+ type: ColumnType.ObjectID,
326
+ nullable: false,
327
+ transformer: ObjectID.getDatabaseTransformer(),
328
+ })
329
+ public onCallDutyPolicyScheduleId?: ObjectID = undefined;
330
+
331
+ @ColumnAccessControl({
332
+ create: [
333
+ Permission.ProjectOwner,
334
+ Permission.ProjectAdmin,
335
+ Permission.ProjectMember,
336
+ Permission.OnCallAdmin,
337
+ Permission.OnCallMember,
338
+ Permission.CreateOnCallDutyPolicyScheduleOwnerTeam,
339
+ ],
340
+ read: [
341
+ Permission.ProjectOwner,
342
+ Permission.ProjectAdmin,
343
+ Permission.ProjectMember,
344
+ Permission.Viewer,
345
+ Permission.OnCallAdmin,
346
+ Permission.OnCallMember,
347
+ Permission.OnCallViewer,
348
+ Permission.ReadOnCallDutyPolicyScheduleOwnerTeam,
349
+ Permission.ReadAllProjectResources,
350
+ ],
351
+ update: [],
352
+ })
353
+ @TableColumn({
354
+ manyToOneRelationColumn: "createdByUserId",
355
+ type: TableColumnType.Entity,
356
+ modelType: User,
357
+ title: "Created by User",
358
+ description:
359
+ "Relation to User who created this object (if this object was created by a User)",
360
+ })
361
+ @ManyToOne(
362
+ () => {
363
+ return User;
364
+ },
365
+ {
366
+ eager: false,
367
+ nullable: true,
368
+ onDelete: "SET NULL",
369
+ orphanedRowAction: "nullify",
370
+ },
371
+ )
372
+ @JoinColumn({ name: "createdByUserId" })
373
+ public createdByUser?: User = undefined;
374
+
375
+ @ColumnAccessControl({
376
+ create: [
377
+ Permission.ProjectOwner,
378
+ Permission.ProjectAdmin,
379
+ Permission.ProjectMember,
380
+ Permission.OnCallAdmin,
381
+ Permission.OnCallMember,
382
+ Permission.CreateOnCallDutyPolicyScheduleOwnerTeam,
383
+ ],
384
+ read: [
385
+ Permission.ProjectOwner,
386
+ Permission.ProjectAdmin,
387
+ Permission.ProjectMember,
388
+ Permission.Viewer,
389
+ Permission.OnCallAdmin,
390
+ Permission.OnCallMember,
391
+ Permission.OnCallViewer,
392
+ Permission.ReadOnCallDutyPolicyScheduleOwnerTeam,
393
+ Permission.ReadAllProjectResources,
394
+ ],
395
+ update: [],
396
+ })
397
+ @TableColumn({
398
+ type: TableColumnType.ObjectID,
399
+ title: "Created by User ID",
400
+ description:
401
+ "User ID who created this object (if this object was created by a User)",
402
+ })
403
+ @Column({
404
+ type: ColumnType.ObjectID,
405
+ nullable: true,
406
+ transformer: ObjectID.getDatabaseTransformer(),
407
+ })
408
+ public createdByUserId?: ObjectID = undefined;
409
+
410
+ @ColumnAccessControl({
411
+ create: [],
412
+ read: [
413
+ Permission.ProjectOwner,
414
+ Permission.ProjectAdmin,
415
+ Permission.ProjectMember,
416
+ Permission.Viewer,
417
+ Permission.OnCallAdmin,
418
+ Permission.OnCallMember,
419
+ Permission.OnCallViewer,
420
+ Permission.ReadOnCallDutyPolicyScheduleOwnerTeam,
421
+ Permission.ReadAllProjectResources,
422
+ ],
423
+ update: [],
424
+ })
425
+ @TableColumn({
426
+ manyToOneRelationColumn: "deletedByUserId",
427
+ type: TableColumnType.Entity,
428
+ title: "Deleted by User",
429
+ modelType: User,
430
+ description:
431
+ "Relation to User who deleted this object (if this object was deleted by a User)",
432
+ })
433
+ @ManyToOne(
434
+ () => {
435
+ return User;
436
+ },
437
+ {
438
+ cascade: false,
439
+ eager: false,
440
+ nullable: true,
441
+ onDelete: "SET NULL",
442
+ orphanedRowAction: "nullify",
443
+ },
444
+ )
445
+ @JoinColumn({ name: "deletedByUserId" })
446
+ public deletedByUser?: User = undefined;
447
+
448
+ @ColumnAccessControl({
449
+ create: [],
450
+ read: [
451
+ Permission.ProjectOwner,
452
+ Permission.ProjectAdmin,
453
+ Permission.ProjectMember,
454
+ Permission.Viewer,
455
+ Permission.OnCallAdmin,
456
+ Permission.OnCallMember,
457
+ Permission.OnCallViewer,
458
+ Permission.ReadOnCallDutyPolicyScheduleOwnerTeam,
459
+ Permission.ReadAllProjectResources,
460
+ ],
461
+ update: [],
462
+ })
463
+ @TableColumn({
464
+ type: TableColumnType.ObjectID,
465
+ title: "Deleted by User ID",
466
+ description:
467
+ "User ID who deleted this object (if this object was deleted by a User)",
468
+ })
469
+ @Column({
470
+ type: ColumnType.ObjectID,
471
+ nullable: true,
472
+ transformer: ObjectID.getDatabaseTransformer(),
473
+ })
474
+ public deletedByUserId?: ObjectID = undefined;
475
+
476
+ @ColumnAccessControl({
477
+ create: [],
478
+ read: [
479
+ Permission.ProjectOwner,
480
+ Permission.ProjectAdmin,
481
+ Permission.ProjectMember,
482
+ Permission.Viewer,
483
+ Permission.OnCallAdmin,
484
+ Permission.OnCallMember,
485
+ Permission.OnCallViewer,
486
+ Permission.ReadOnCallDutyPolicyScheduleOwnerTeam,
487
+ Permission.ReadAllProjectResources,
488
+ ],
489
+ update: [],
490
+ })
491
+ @Index()
492
+ @TableColumn({
493
+ type: TableColumnType.Boolean,
494
+ computed: true,
495
+ hideColumnInDocumentation: true,
496
+ required: true,
497
+ isDefaultValueColumn: true,
498
+ title: "Are Owners Notified",
499
+ description: "Are owners notified of this resource ownership?",
500
+ defaultValue: false,
501
+ })
502
+ @Column({
503
+ type: ColumnType.Boolean,
504
+ nullable: false,
505
+ default: false,
506
+ })
507
+ public isOwnerNotified?: boolean = undefined;
508
+ }