@oneuptime/common 7.0.4039 → 7.0.4064

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 (92) hide show
  1. package/Models/DatabaseModels/Index.ts +9 -1
  2. package/Models/DatabaseModels/OnCallDutyPolicy.ts +20 -0
  3. package/Models/DatabaseModels/OnCallDutyPolicyFeed.ts +527 -0
  4. package/Models/DatabaseModels/OnCallDutyPolicyOwnerTeam.ts +426 -0
  5. package/Models/DatabaseModels/OnCallDutyPolicyOwnerUser.ts +425 -0
  6. package/Server/API/SlackAPI.ts +14 -0
  7. package/Server/Infrastructure/Postgres/SchemaMigrations/1744804990712-MigrationName.ts +17 -0
  8. package/Server/Infrastructure/Postgres/SchemaMigrations/1744809770336-MigrationName.ts +173 -0
  9. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +4 -0
  10. package/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.ts +71 -2
  11. package/Server/Services/OnCallDutyPolicyEscalationRuleService.ts +14 -0
  12. package/Server/Services/OnCallDutyPolicyEscalationRuleTeamService.ts +69 -2
  13. package/Server/Services/OnCallDutyPolicyEscalationRuleUserService.ts +77 -2
  14. package/Server/Services/OnCallDutyPolicyExecutionLogService.ts +1 -1
  15. package/Server/Services/OnCallDutyPolicyExecutionLogTimelineService.ts +1 -1
  16. package/Server/Services/OnCallDutyPolicyFeedService.ts +156 -0
  17. package/Server/Services/OnCallDutyPolicyOwnerTeamService.ts +181 -0
  18. package/Server/Services/OnCallDutyPolicyOwnerUserService.ts +174 -0
  19. package/Server/Services/OnCallDutyPolicyScheduleService.ts +101 -9
  20. package/Server/Services/OnCallDutyPolicyService.ts +219 -1
  21. package/Server/Services/OnCallDutyPolicyUserOverrideService.ts +184 -1
  22. package/Server/Services/WorkspaceNotificationRuleService.ts +93 -0
  23. package/Server/Utils/StartServer.ts +5 -2
  24. package/Server/Utils/Workspace/Slack/Actions/ActionTypes.ts +3 -0
  25. package/Server/Utils/Workspace/Slack/Actions/OnCallDutyPolicy.ts +48 -0
  26. package/Server/Utils/Workspace/Slack/Messages/OnCallDutyPolicy.ts +62 -0
  27. package/Server/Utils/Workspace/WorkspaceMessages/OnCallDutyPolicy.ts +75 -0
  28. package/Types/Permission.ts +112 -7
  29. package/Types/Workspace/NotificationRules/EventType.ts +1 -0
  30. package/Types/Workspace/NotificationRules/NotificationRuleCondition.ts +5 -0
  31. package/UI/webpack-middleware.js +65 -0
  32. package/build/dist/Models/DatabaseModels/Index.js +8 -0
  33. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  34. package/build/dist/Models/DatabaseModels/OnCallDutyPolicy.js +20 -0
  35. package/build/dist/Models/DatabaseModels/OnCallDutyPolicy.js.map +1 -1
  36. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyFeed.js +549 -0
  37. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyFeed.js.map +1 -0
  38. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyOwnerTeam.js +442 -0
  39. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyOwnerTeam.js.map +1 -0
  40. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyOwnerUser.js +441 -0
  41. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyOwnerUser.js.map +1 -0
  42. package/build/dist/Server/API/SlackAPI.js +11 -0
  43. package/build/dist/Server/API/SlackAPI.js.map +1 -1
  44. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1744804990712-MigrationName.js +12 -0
  45. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1744804990712-MigrationName.js.map +1 -0
  46. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1744809770336-MigrationName.js +66 -0
  47. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1744809770336-MigrationName.js.map +1 -0
  48. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +4 -0
  49. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  50. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.js +52 -3
  51. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.js.map +1 -1
  52. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleService.js +12 -0
  53. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleService.js.map +1 -1
  54. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleTeamService.js +52 -3
  55. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleTeamService.js.map +1 -1
  56. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleUserService.js +63 -3
  57. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleUserService.js.map +1 -1
  58. package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogService.js +1 -1
  59. package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogService.js.map +1 -1
  60. package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogTimelineService.js +1 -1
  61. package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogTimelineService.js.map +1 -1
  62. package/build/dist/Server/Services/OnCallDutyPolicyFeedService.js +119 -0
  63. package/build/dist/Server/Services/OnCallDutyPolicyFeedService.js.map +1 -0
  64. package/build/dist/Server/Services/OnCallDutyPolicyOwnerTeamService.js +161 -0
  65. package/build/dist/Server/Services/OnCallDutyPolicyOwnerTeamService.js.map +1 -0
  66. package/build/dist/Server/Services/OnCallDutyPolicyOwnerUserService.js +154 -0
  67. package/build/dist/Server/Services/OnCallDutyPolicyOwnerUserService.js.map +1 -0
  68. package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js +87 -20
  69. package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js.map +1 -1
  70. package/build/dist/Server/Services/OnCallDutyPolicyService.js +174 -2
  71. package/build/dist/Server/Services/OnCallDutyPolicyService.js.map +1 -1
  72. package/build/dist/Server/Services/OnCallDutyPolicyUserOverrideService.js +122 -0
  73. package/build/dist/Server/Services/OnCallDutyPolicyUserOverrideService.js.map +1 -1
  74. package/build/dist/Server/Services/WorkspaceNotificationRuleService.js +71 -0
  75. package/build/dist/Server/Services/WorkspaceNotificationRuleService.js.map +1 -1
  76. package/build/dist/Server/Utils/StartServer.js +5 -2
  77. package/build/dist/Server/Utils/StartServer.js.map +1 -1
  78. package/build/dist/Server/Utils/Workspace/Slack/Actions/ActionTypes.js +2 -0
  79. package/build/dist/Server/Utils/Workspace/Slack/Actions/ActionTypes.js.map +1 -1
  80. package/build/dist/Server/Utils/Workspace/Slack/Actions/OnCallDutyPolicy.js +50 -0
  81. package/build/dist/Server/Utils/Workspace/Slack/Actions/OnCallDutyPolicy.js.map +1 -0
  82. package/build/dist/Server/Utils/Workspace/Slack/Messages/OnCallDutyPolicy.js +52 -0
  83. package/build/dist/Server/Utils/Workspace/Slack/Messages/OnCallDutyPolicy.js.map +1 -0
  84. package/build/dist/Server/Utils/Workspace/WorkspaceMessages/OnCallDutyPolicy.js +69 -0
  85. package/build/dist/Server/Utils/Workspace/WorkspaceMessages/OnCallDutyPolicy.js.map +1 -0
  86. package/build/dist/Types/Permission.js +95 -7
  87. package/build/dist/Types/Permission.js.map +1 -1
  88. package/build/dist/Types/Workspace/NotificationRules/EventType.js +1 -0
  89. package/build/dist/Types/Workspace/NotificationRules/EventType.js.map +1 -1
  90. package/build/dist/Types/Workspace/NotificationRules/NotificationRuleCondition.js +4 -0
  91. package/build/dist/Types/Workspace/NotificationRules/NotificationRuleCondition.js.map +1 -1
  92. package/package.json +2 -2
@@ -0,0 +1,425 @@
1
+ import OnCallDutyPolicy from "./OnCallDutyPolicy";
2
+ import Project from "./Project";
3
+ import User from "./User";
4
+ import BaseModel from "./DatabaseBaseModel/DatabaseBaseModel";
5
+ import Route from "../../Types/API/Route";
6
+ import { PlanType } from "../../Types/Billing/SubscriptionPlan";
7
+ import ColumnAccessControl from "../../Types/Database/AccessControl/ColumnAccessControl";
8
+ import TableAccessControl from "../../Types/Database/AccessControl/TableAccessControl";
9
+ import TableBillingAccessControl from "../../Types/Database/AccessControl/TableBillingAccessControl";
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 { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
22
+
23
+ @EnableDocumentation()
24
+ @TenantColumn("projectId")
25
+ @TableBillingAccessControl({
26
+ create: PlanType.Growth,
27
+ read: PlanType.Free,
28
+ update: PlanType.Growth,
29
+ delete: PlanType.Free,
30
+ })
31
+ @TableAccessControl({
32
+ create: [
33
+ Permission.ProjectOwner,
34
+ Permission.ProjectAdmin,
35
+ Permission.ProjectMember,
36
+ Permission.CreateOnCallDutyPolicyOwnerUser,
37
+ ],
38
+ read: [
39
+ Permission.ProjectOwner,
40
+ Permission.ProjectAdmin,
41
+ Permission.ProjectMember,
42
+ Permission.ReadOnCallDutyPolicyOwnerUser,
43
+ ],
44
+ delete: [
45
+ Permission.ProjectOwner,
46
+ Permission.ProjectAdmin,
47
+ Permission.ProjectMember,
48
+ Permission.DeleteOnCallDutyPolicyOwnerUser,
49
+ ],
50
+ update: [
51
+ Permission.ProjectOwner,
52
+ Permission.ProjectAdmin,
53
+ Permission.ProjectMember,
54
+ Permission.EditOnCallDutyPolicyOwnerUser,
55
+ ],
56
+ })
57
+ @EnableWorkflow({
58
+ create: true,
59
+ delete: true,
60
+ update: true,
61
+ read: true,
62
+ })
63
+ @CrudApiEndpoint(new Route("/onCallDutyPolicy-owner-user"))
64
+ @TableMetadata({
65
+ tableName: "OnCallDutyPolicyOwnerUser",
66
+ singularName: "OnCallDutyPolicy User Owner",
67
+ pluralName: "OnCallDutyPolicy User Owners",
68
+ icon: IconProp.Signal,
69
+ tableDescription: "Add users as owners to your onCallDutyPolicys.",
70
+ })
71
+ @Entity({
72
+ name: "OnCallDutyPolicyOwnerUser",
73
+ })
74
+ export default class OnCallDutyPolicyOwnerUser extends BaseModel {
75
+ @ColumnAccessControl({
76
+ create: [
77
+ Permission.ProjectOwner,
78
+ Permission.ProjectAdmin,
79
+ Permission.ProjectMember,
80
+ Permission.CreateOnCallDutyPolicyOwnerUser,
81
+ ],
82
+ read: [
83
+ Permission.ProjectOwner,
84
+ Permission.ProjectAdmin,
85
+ Permission.ProjectMember,
86
+ Permission.ReadOnCallDutyPolicyOwnerUser,
87
+ ],
88
+ update: [],
89
+ })
90
+ @TableColumn({
91
+ manyToOneRelationColumn: "projectId",
92
+ type: TableColumnType.Entity,
93
+ modelType: Project,
94
+ title: "Project",
95
+ description: "Relation to Project Resource in which this object belongs",
96
+ })
97
+ @ManyToOne(
98
+ () => {
99
+ return Project;
100
+ },
101
+ {
102
+ eager: false,
103
+ nullable: false,
104
+ onDelete: "CASCADE",
105
+ orphanedRowAction: "nullify",
106
+ },
107
+ )
108
+ @JoinColumn({ name: "projectId" })
109
+ public project?: Project = undefined;
110
+
111
+ @ColumnAccessControl({
112
+ create: [
113
+ Permission.ProjectOwner,
114
+ Permission.ProjectAdmin,
115
+ Permission.ProjectMember,
116
+ Permission.CreateOnCallDutyPolicyOwnerUser,
117
+ ],
118
+ read: [
119
+ Permission.ProjectOwner,
120
+ Permission.ProjectAdmin,
121
+ Permission.ProjectMember,
122
+ Permission.ReadOnCallDutyPolicyOwnerUser,
123
+ ],
124
+ update: [],
125
+ })
126
+ @Index()
127
+ @TableColumn({
128
+ type: TableColumnType.ObjectID,
129
+ required: true,
130
+ canReadOnRelationQuery: true,
131
+ title: "Project ID",
132
+ description: "ID of your OneUptime Project in which this object belongs",
133
+ })
134
+ @Column({
135
+ type: ColumnType.ObjectID,
136
+ nullable: false,
137
+ transformer: ObjectID.getDatabaseTransformer(),
138
+ })
139
+ public projectId?: ObjectID = undefined;
140
+
141
+ @ColumnAccessControl({
142
+ create: [
143
+ Permission.ProjectOwner,
144
+ Permission.ProjectAdmin,
145
+ Permission.ProjectMember,
146
+ Permission.CreateOnCallDutyPolicyOwnerUser,
147
+ ],
148
+ read: [
149
+ Permission.ProjectOwner,
150
+ Permission.ProjectAdmin,
151
+ Permission.ProjectMember,
152
+ Permission.ReadOnCallDutyPolicyOwnerUser,
153
+ ],
154
+ update: [],
155
+ })
156
+ @TableColumn({
157
+ manyToOneRelationColumn: "userId",
158
+ type: TableColumnType.Entity,
159
+ modelType: User,
160
+ title: "User",
161
+ description:
162
+ "User that is the owner. This user will receive notifications. ",
163
+ })
164
+ @ManyToOne(
165
+ () => {
166
+ return User;
167
+ },
168
+ {
169
+ eager: false,
170
+ nullable: true,
171
+ onDelete: "CASCADE",
172
+ orphanedRowAction: "nullify",
173
+ },
174
+ )
175
+ @JoinColumn({ name: "userId" })
176
+ public user?: User = undefined;
177
+
178
+ @ColumnAccessControl({
179
+ create: [
180
+ Permission.ProjectOwner,
181
+ Permission.ProjectAdmin,
182
+ Permission.ProjectMember,
183
+ Permission.CreateOnCallDutyPolicyOwnerUser,
184
+ ],
185
+ read: [
186
+ Permission.ProjectOwner,
187
+ Permission.ProjectAdmin,
188
+ Permission.ProjectMember,
189
+ Permission.ReadOnCallDutyPolicyOwnerUser,
190
+ ],
191
+ update: [],
192
+ })
193
+ @Index()
194
+ @TableColumn({
195
+ type: TableColumnType.ObjectID,
196
+ required: true,
197
+ canReadOnRelationQuery: true,
198
+ title: "User ID",
199
+ description: "ID of your OneUptime User in which this object belongs",
200
+ })
201
+ @Column({
202
+ type: ColumnType.ObjectID,
203
+ nullable: false,
204
+ transformer: ObjectID.getDatabaseTransformer(),
205
+ })
206
+ public userId?: ObjectID = undefined;
207
+
208
+ @ColumnAccessControl({
209
+ create: [
210
+ Permission.ProjectOwner,
211
+ Permission.ProjectAdmin,
212
+ Permission.ProjectMember,
213
+ Permission.CreateOnCallDutyPolicyOwnerUser,
214
+ ],
215
+ read: [
216
+ Permission.ProjectOwner,
217
+ Permission.ProjectAdmin,
218
+ Permission.ProjectMember,
219
+ Permission.ReadOnCallDutyPolicyOwnerUser,
220
+ ],
221
+ update: [],
222
+ })
223
+ @TableColumn({
224
+ manyToOneRelationColumn: "onCallDutyPolicyId",
225
+ type: TableColumnType.Entity,
226
+ modelType: OnCallDutyPolicy,
227
+ title: "OnCallDutyPolicy",
228
+ description:
229
+ "Relation to OnCallDutyPolicy Resource in which this object belongs",
230
+ })
231
+ @ManyToOne(
232
+ () => {
233
+ return OnCallDutyPolicy;
234
+ },
235
+ {
236
+ eager: false,
237
+ nullable: true,
238
+ onDelete: "CASCADE",
239
+ orphanedRowAction: "nullify",
240
+ },
241
+ )
242
+ @JoinColumn({ name: "onCallDutyPolicyId" })
243
+ public onCallDutyPolicy?: OnCallDutyPolicy = undefined;
244
+
245
+ @ColumnAccessControl({
246
+ create: [
247
+ Permission.ProjectOwner,
248
+ Permission.ProjectAdmin,
249
+ Permission.ProjectMember,
250
+ Permission.CreateOnCallDutyPolicyOwnerUser,
251
+ ],
252
+ read: [
253
+ Permission.ProjectOwner,
254
+ Permission.ProjectAdmin,
255
+ Permission.ProjectMember,
256
+ Permission.ReadOnCallDutyPolicyOwnerUser,
257
+ ],
258
+ update: [],
259
+ })
260
+ @Index()
261
+ @TableColumn({
262
+ type: TableColumnType.ObjectID,
263
+ required: true,
264
+ canReadOnRelationQuery: true,
265
+ title: "OnCallDutyPolicy ID",
266
+ description:
267
+ "ID of your OneUptime OnCallDutyPolicy in which this object belongs",
268
+ })
269
+ @Column({
270
+ type: ColumnType.ObjectID,
271
+ nullable: false,
272
+ transformer: ObjectID.getDatabaseTransformer(),
273
+ })
274
+ public onCallDutyPolicyId?: ObjectID = undefined;
275
+
276
+ @ColumnAccessControl({
277
+ create: [
278
+ Permission.ProjectOwner,
279
+ Permission.ProjectAdmin,
280
+ Permission.ProjectMember,
281
+ Permission.CreateOnCallDutyPolicyOwnerUser,
282
+ ],
283
+ read: [
284
+ Permission.ProjectOwner,
285
+ Permission.ProjectAdmin,
286
+ Permission.ProjectMember,
287
+ Permission.ReadOnCallDutyPolicyOwnerUser,
288
+ ],
289
+ update: [],
290
+ })
291
+ @TableColumn({
292
+ manyToOneRelationColumn: "createdByUserId",
293
+ type: TableColumnType.Entity,
294
+ modelType: User,
295
+ title: "Created by User",
296
+ description:
297
+ "Relation to User who created this object (if this object was created by a User)",
298
+ })
299
+ @ManyToOne(
300
+ () => {
301
+ return User;
302
+ },
303
+ {
304
+ eager: false,
305
+ nullable: true,
306
+ onDelete: "SET NULL",
307
+ orphanedRowAction: "nullify",
308
+ },
309
+ )
310
+ @JoinColumn({ name: "createdByUserId" })
311
+ public createdByUser?: User = undefined;
312
+
313
+ @ColumnAccessControl({
314
+ create: [
315
+ Permission.ProjectOwner,
316
+ Permission.ProjectAdmin,
317
+ Permission.ProjectMember,
318
+ Permission.CreateOnCallDutyPolicyOwnerUser,
319
+ ],
320
+ read: [
321
+ Permission.ProjectOwner,
322
+ Permission.ProjectAdmin,
323
+ Permission.ProjectMember,
324
+ Permission.ReadOnCallDutyPolicyOwnerUser,
325
+ ],
326
+ update: [],
327
+ })
328
+ @TableColumn({
329
+ type: TableColumnType.ObjectID,
330
+ title: "Created by User ID",
331
+ description:
332
+ "User ID who created this object (if this object was created by a User)",
333
+ })
334
+ @Column({
335
+ type: ColumnType.ObjectID,
336
+ nullable: true,
337
+ transformer: ObjectID.getDatabaseTransformer(),
338
+ })
339
+ public createdByUserId?: ObjectID = undefined;
340
+
341
+ @ColumnAccessControl({
342
+ create: [],
343
+ read: [
344
+ Permission.ProjectOwner,
345
+ Permission.ProjectAdmin,
346
+ Permission.ProjectMember,
347
+ Permission.ReadOnCallDutyPolicyOwnerUser,
348
+ ],
349
+ update: [],
350
+ })
351
+ @TableColumn({
352
+ manyToOneRelationColumn: "deletedByUserId",
353
+ type: TableColumnType.Entity,
354
+ title: "Deleted by User",
355
+ description:
356
+ "Relation to User who deleted this object (if this object was deleted by a User)",
357
+ })
358
+ @ManyToOne(
359
+ () => {
360
+ return User;
361
+ },
362
+ {
363
+ cascade: false,
364
+ eager: false,
365
+ nullable: true,
366
+ onDelete: "SET NULL",
367
+ orphanedRowAction: "nullify",
368
+ },
369
+ )
370
+ @JoinColumn({ name: "deletedByUserId" })
371
+ public deletedByUser?: User = undefined;
372
+
373
+ @ColumnAccessControl({
374
+ create: [],
375
+ read: [
376
+ Permission.ProjectOwner,
377
+ Permission.ProjectAdmin,
378
+ Permission.ProjectMember,
379
+ Permission.ReadOnCallDutyPolicyOwnerUser,
380
+ ],
381
+ update: [],
382
+ })
383
+ @TableColumn({
384
+ type: TableColumnType.ObjectID,
385
+ title: "Deleted by User ID",
386
+ description:
387
+ "User ID who deleted this object (if this object was deleted by a User)",
388
+ })
389
+ @Column({
390
+ type: ColumnType.ObjectID,
391
+ nullable: true,
392
+ transformer: ObjectID.getDatabaseTransformer(),
393
+ })
394
+ public deletedByUserId?: ObjectID = undefined;
395
+
396
+ @ColumnAccessControl({
397
+ create: [
398
+ Permission.ProjectOwner,
399
+ Permission.ProjectAdmin,
400
+ Permission.ProjectMember,
401
+ Permission.CreateOnCallDutyPolicyOwnerUser,
402
+ ],
403
+ read: [
404
+ Permission.ProjectOwner,
405
+ Permission.ProjectAdmin,
406
+ Permission.ProjectMember,
407
+ Permission.ReadOnCallDutyPolicyOwnerUser,
408
+ ],
409
+ update: [],
410
+ })
411
+ @Index()
412
+ @TableColumn({
413
+ type: TableColumnType.Boolean,
414
+ required: true,
415
+ isDefaultValueColumn: true,
416
+ title: "Are Owners Notified",
417
+ description: "Are owners notified of this resource ownership?",
418
+ })
419
+ @Column({
420
+ type: ColumnType.Boolean,
421
+ nullable: false,
422
+ default: false,
423
+ })
424
+ public isOwnerNotified?: boolean = undefined;
425
+ }
@@ -34,6 +34,7 @@ import SlackAlertActions from "../Utils/Workspace/Slack/Actions/Alert";
34
34
  import SlackScheduledMaintenanceActions from "../Utils/Workspace/Slack/Actions/ScheduledMaintenance";
35
35
  import LIMIT_MAX from "../../Types/Database/LimitMax";
36
36
  import SlackMonitorActions from "../Utils/Workspace/Slack/Actions/Monitor";
37
+ import SlackOnCallDutyActions from "../Utils/Workspace/Slack/Actions/OnCallDutyPolicy";
37
38
 
38
39
  export default class SlackAPI {
39
40
  public getRouter(): ExpressRouter {
@@ -351,6 +352,19 @@ export default class SlackAPI {
351
352
  });
352
353
  }
353
354
 
355
+ if (
356
+ SlackOnCallDutyActions.isOnCallDutyAction({
357
+ actionType: action.actionType,
358
+ })
359
+ ) {
360
+ return SlackOnCallDutyActions.handleOnCallDutyAction({
361
+ slackRequest: authResult,
362
+ action: action,
363
+ req: req,
364
+ res: res,
365
+ });
366
+ }
367
+
354
368
  if (
355
369
  SlackAlertActions.isAlertAction({
356
370
  actionType: action.actionType,
@@ -0,0 +1,17 @@
1
+ import { MigrationInterface, QueryRunner } from "typeorm";
2
+
3
+ export class MigrationName1744804990712 implements MigrationInterface {
4
+ public name = "MigrationName1744804990712";
5
+
6
+ public async up(queryRunner: QueryRunner): Promise<void> {
7
+ await queryRunner.query(
8
+ `ALTER TABLE "OnCallDutyPolicy" ADD "postUpdatesToWorkspaceChannels" jsonb`,
9
+ );
10
+ }
11
+
12
+ public async down(queryRunner: QueryRunner): Promise<void> {
13
+ await queryRunner.query(
14
+ `ALTER TABLE "OnCallDutyPolicy" DROP COLUMN "postUpdatesToWorkspaceChannels"`,
15
+ );
16
+ }
17
+ }
@@ -0,0 +1,173 @@
1
+ import { MigrationInterface, QueryRunner } from "typeorm";
2
+
3
+ export class MigrationName1744809770336 implements MigrationInterface {
4
+ public name = "MigrationName1744809770336";
5
+
6
+ public async up(queryRunner: QueryRunner): Promise<void> {
7
+ await queryRunner.query(
8
+ `CREATE TABLE "OnCallDutyPolicyOwnerTeam" ("_id" uuid NOT NULL DEFAULT uuid_generate_v4(), "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP WITH TIME ZONE, "version" integer NOT NULL, "projectId" uuid NOT NULL, "teamId" uuid NOT NULL, "onCallDutyPolicyId" uuid NOT NULL, "createdByUserId" uuid, "deletedByUserId" uuid, "isOwnerNotified" boolean NOT NULL DEFAULT false, CONSTRAINT "PK_5e3c9794d226535f20b03bd2854" PRIMARY KEY ("_id"))`,
9
+ );
10
+ await queryRunner.query(
11
+ `CREATE INDEX "IDX_cbfdf265361e75736dc2220fe7" ON "OnCallDutyPolicyOwnerTeam" ("projectId") `,
12
+ );
13
+ await queryRunner.query(
14
+ `CREATE INDEX "IDX_bc8fc87c56e5fcbc191274bf6a" ON "OnCallDutyPolicyOwnerTeam" ("teamId") `,
15
+ );
16
+ await queryRunner.query(
17
+ `CREATE INDEX "IDX_5517a8f733ab84dbccf2365db1" ON "OnCallDutyPolicyOwnerTeam" ("onCallDutyPolicyId") `,
18
+ );
19
+ await queryRunner.query(
20
+ `CREATE INDEX "IDX_2288828246c2a6151768f152a0" ON "OnCallDutyPolicyOwnerTeam" ("isOwnerNotified") `,
21
+ );
22
+ await queryRunner.query(
23
+ `CREATE TABLE "OnCallDutyPolicyOwnerUser" ("_id" uuid NOT NULL DEFAULT uuid_generate_v4(), "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP WITH TIME ZONE, "version" integer NOT NULL, "projectId" uuid NOT NULL, "userId" uuid NOT NULL, "onCallDutyPolicyId" uuid NOT NULL, "createdByUserId" uuid, "deletedByUserId" uuid, "isOwnerNotified" boolean NOT NULL DEFAULT false, CONSTRAINT "PK_bd784c472219847bbf9e9b6173c" PRIMARY KEY ("_id"))`,
24
+ );
25
+ await queryRunner.query(
26
+ `CREATE INDEX "IDX_f1403509cc87e41a15a68798d8" ON "OnCallDutyPolicyOwnerUser" ("projectId") `,
27
+ );
28
+ await queryRunner.query(
29
+ `CREATE INDEX "IDX_710bd5d20bc0dc33448fb321d7" ON "OnCallDutyPolicyOwnerUser" ("userId") `,
30
+ );
31
+ await queryRunner.query(
32
+ `CREATE INDEX "IDX_e0c45b9ba88d7f61cf3dbb527e" ON "OnCallDutyPolicyOwnerUser" ("onCallDutyPolicyId") `,
33
+ );
34
+ await queryRunner.query(
35
+ `CREATE INDEX "IDX_d9f6f32ce626cc4184b349f049" ON "OnCallDutyPolicyOwnerUser" ("isOwnerNotified") `,
36
+ );
37
+ await queryRunner.query(
38
+ `CREATE TABLE "OnCallDutyPolicyFeed" ("_id" uuid NOT NULL DEFAULT uuid_generate_v4(), "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP WITH TIME ZONE, "version" integer NOT NULL, "projectId" uuid NOT NULL, "onCallDutyPolicyId" uuid NOT NULL, "createdByUserId" uuid, "deletedByUserId" uuid, "feedInfoInMarkdown" text NOT NULL, "moreInformationInMarkdown" text, "onCallDutyPolicyFeedEventType" character varying NOT NULL, "displayColor" character varying(10) NOT NULL, "userId" uuid, "postedAt" TIMESTAMP WITH TIME ZONE, CONSTRAINT "PK_c0588104fd2df2d10527832c802" PRIMARY KEY ("_id"))`,
39
+ );
40
+ await queryRunner.query(
41
+ `CREATE INDEX "IDX_ff7561fb2f3ce39b1e77e65bc5" ON "OnCallDutyPolicyFeed" ("projectId") `,
42
+ );
43
+ await queryRunner.query(
44
+ `CREATE INDEX "IDX_cb7f7b652d475b3f278cce41ac" ON "OnCallDutyPolicyFeed" ("onCallDutyPolicyId") `,
45
+ );
46
+ await queryRunner.query(
47
+ `ALTER TABLE "OnCallDutyPolicyOwnerTeam" ADD CONSTRAINT "FK_cbfdf265361e75736dc2220fe7d" FOREIGN KEY ("projectId") REFERENCES "Project"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`,
48
+ );
49
+ await queryRunner.query(
50
+ `ALTER TABLE "OnCallDutyPolicyOwnerTeam" ADD CONSTRAINT "FK_bc8fc87c56e5fcbc191274bf6aa" FOREIGN KEY ("teamId") REFERENCES "Team"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`,
51
+ );
52
+ await queryRunner.query(
53
+ `ALTER TABLE "OnCallDutyPolicyOwnerTeam" ADD CONSTRAINT "FK_5517a8f733ab84dbccf2365db1c" FOREIGN KEY ("onCallDutyPolicyId") REFERENCES "OnCallDutyPolicy"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`,
54
+ );
55
+ await queryRunner.query(
56
+ `ALTER TABLE "OnCallDutyPolicyOwnerTeam" ADD CONSTRAINT "FK_6dce1c2951ff6e979d2af68a4c9" FOREIGN KEY ("createdByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`,
57
+ );
58
+ await queryRunner.query(
59
+ `ALTER TABLE "OnCallDutyPolicyOwnerTeam" ADD CONSTRAINT "FK_4779fb1eee2979cb5f43b3d0596" FOREIGN KEY ("deletedByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`,
60
+ );
61
+ await queryRunner.query(
62
+ `ALTER TABLE "OnCallDutyPolicyOwnerUser" ADD CONSTRAINT "FK_f1403509cc87e41a15a68798d83" FOREIGN KEY ("projectId") REFERENCES "Project"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`,
63
+ );
64
+ await queryRunner.query(
65
+ `ALTER TABLE "OnCallDutyPolicyOwnerUser" ADD CONSTRAINT "FK_710bd5d20bc0dc33448fb321d71" FOREIGN KEY ("userId") REFERENCES "User"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`,
66
+ );
67
+ await queryRunner.query(
68
+ `ALTER TABLE "OnCallDutyPolicyOwnerUser" ADD CONSTRAINT "FK_e0c45b9ba88d7f61cf3dbb527ed" FOREIGN KEY ("onCallDutyPolicyId") REFERENCES "OnCallDutyPolicy"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`,
69
+ );
70
+ await queryRunner.query(
71
+ `ALTER TABLE "OnCallDutyPolicyOwnerUser" ADD CONSTRAINT "FK_6525fe960624274ae771860c088" FOREIGN KEY ("createdByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`,
72
+ );
73
+ await queryRunner.query(
74
+ `ALTER TABLE "OnCallDutyPolicyOwnerUser" ADD CONSTRAINT "FK_18918751784b7f55ad605f2310b" FOREIGN KEY ("deletedByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`,
75
+ );
76
+ await queryRunner.query(
77
+ `ALTER TABLE "OnCallDutyPolicyFeed" ADD CONSTRAINT "FK_ff7561fb2f3ce39b1e77e65bc52" FOREIGN KEY ("projectId") REFERENCES "Project"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`,
78
+ );
79
+ await queryRunner.query(
80
+ `ALTER TABLE "OnCallDutyPolicyFeed" ADD CONSTRAINT "FK_cb7f7b652d475b3f278cce41acb" FOREIGN KEY ("onCallDutyPolicyId") REFERENCES "OnCallDutyPolicy"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`,
81
+ );
82
+ await queryRunner.query(
83
+ `ALTER TABLE "OnCallDutyPolicyFeed" ADD CONSTRAINT "FK_d737aa24ece081e02eaaf743ab7" FOREIGN KEY ("createdByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`,
84
+ );
85
+ await queryRunner.query(
86
+ `ALTER TABLE "OnCallDutyPolicyFeed" ADD CONSTRAINT "FK_daaf8acf8317e6f8b7beb07b520" FOREIGN KEY ("deletedByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`,
87
+ );
88
+ await queryRunner.query(
89
+ `ALTER TABLE "OnCallDutyPolicyFeed" ADD CONSTRAINT "FK_3f6e3942931ca67e6fdc8c77cba" FOREIGN KEY ("userId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`,
90
+ );
91
+ }
92
+
93
+ public async down(queryRunner: QueryRunner): Promise<void> {
94
+ await queryRunner.query(
95
+ `ALTER TABLE "OnCallDutyPolicyFeed" DROP CONSTRAINT "FK_3f6e3942931ca67e6fdc8c77cba"`,
96
+ );
97
+ await queryRunner.query(
98
+ `ALTER TABLE "OnCallDutyPolicyFeed" DROP CONSTRAINT "FK_daaf8acf8317e6f8b7beb07b520"`,
99
+ );
100
+ await queryRunner.query(
101
+ `ALTER TABLE "OnCallDutyPolicyFeed" DROP CONSTRAINT "FK_d737aa24ece081e02eaaf743ab7"`,
102
+ );
103
+ await queryRunner.query(
104
+ `ALTER TABLE "OnCallDutyPolicyFeed" DROP CONSTRAINT "FK_cb7f7b652d475b3f278cce41acb"`,
105
+ );
106
+ await queryRunner.query(
107
+ `ALTER TABLE "OnCallDutyPolicyFeed" DROP CONSTRAINT "FK_ff7561fb2f3ce39b1e77e65bc52"`,
108
+ );
109
+ await queryRunner.query(
110
+ `ALTER TABLE "OnCallDutyPolicyOwnerUser" DROP CONSTRAINT "FK_18918751784b7f55ad605f2310b"`,
111
+ );
112
+ await queryRunner.query(
113
+ `ALTER TABLE "OnCallDutyPolicyOwnerUser" DROP CONSTRAINT "FK_6525fe960624274ae771860c088"`,
114
+ );
115
+ await queryRunner.query(
116
+ `ALTER TABLE "OnCallDutyPolicyOwnerUser" DROP CONSTRAINT "FK_e0c45b9ba88d7f61cf3dbb527ed"`,
117
+ );
118
+ await queryRunner.query(
119
+ `ALTER TABLE "OnCallDutyPolicyOwnerUser" DROP CONSTRAINT "FK_710bd5d20bc0dc33448fb321d71"`,
120
+ );
121
+ await queryRunner.query(
122
+ `ALTER TABLE "OnCallDutyPolicyOwnerUser" DROP CONSTRAINT "FK_f1403509cc87e41a15a68798d83"`,
123
+ );
124
+ await queryRunner.query(
125
+ `ALTER TABLE "OnCallDutyPolicyOwnerTeam" DROP CONSTRAINT "FK_4779fb1eee2979cb5f43b3d0596"`,
126
+ );
127
+ await queryRunner.query(
128
+ `ALTER TABLE "OnCallDutyPolicyOwnerTeam" DROP CONSTRAINT "FK_6dce1c2951ff6e979d2af68a4c9"`,
129
+ );
130
+ await queryRunner.query(
131
+ `ALTER TABLE "OnCallDutyPolicyOwnerTeam" DROP CONSTRAINT "FK_5517a8f733ab84dbccf2365db1c"`,
132
+ );
133
+ await queryRunner.query(
134
+ `ALTER TABLE "OnCallDutyPolicyOwnerTeam" DROP CONSTRAINT "FK_bc8fc87c56e5fcbc191274bf6aa"`,
135
+ );
136
+ await queryRunner.query(
137
+ `ALTER TABLE "OnCallDutyPolicyOwnerTeam" DROP CONSTRAINT "FK_cbfdf265361e75736dc2220fe7d"`,
138
+ );
139
+ await queryRunner.query(
140
+ `DROP INDEX "public"."IDX_cb7f7b652d475b3f278cce41ac"`,
141
+ );
142
+ await queryRunner.query(
143
+ `DROP INDEX "public"."IDX_ff7561fb2f3ce39b1e77e65bc5"`,
144
+ );
145
+ await queryRunner.query(`DROP TABLE "OnCallDutyPolicyFeed"`);
146
+ await queryRunner.query(
147
+ `DROP INDEX "public"."IDX_d9f6f32ce626cc4184b349f049"`,
148
+ );
149
+ await queryRunner.query(
150
+ `DROP INDEX "public"."IDX_e0c45b9ba88d7f61cf3dbb527e"`,
151
+ );
152
+ await queryRunner.query(
153
+ `DROP INDEX "public"."IDX_710bd5d20bc0dc33448fb321d7"`,
154
+ );
155
+ await queryRunner.query(
156
+ `DROP INDEX "public"."IDX_f1403509cc87e41a15a68798d8"`,
157
+ );
158
+ await queryRunner.query(`DROP TABLE "OnCallDutyPolicyOwnerUser"`);
159
+ await queryRunner.query(
160
+ `DROP INDEX "public"."IDX_2288828246c2a6151768f152a0"`,
161
+ );
162
+ await queryRunner.query(
163
+ `DROP INDEX "public"."IDX_5517a8f733ab84dbccf2365db1"`,
164
+ );
165
+ await queryRunner.query(
166
+ `DROP INDEX "public"."IDX_bc8fc87c56e5fcbc191274bf6a"`,
167
+ );
168
+ await queryRunner.query(
169
+ `DROP INDEX "public"."IDX_cbfdf265361e75736dc2220fe7"`,
170
+ );
171
+ await queryRunner.query(`DROP TABLE "OnCallDutyPolicyOwnerTeam"`);
172
+ }
173
+ }
@@ -129,6 +129,8 @@ import { MigrationName1743530326936 } from "./1743530326936-MigrationName";
129
129
  import { MigrationName1743538648415 } from "./1743538648415-MigrationName";
130
130
  import { MigrationName1743692467814 } from "./1743692467814-MigrationName";
131
131
  import { MigrationName1743714801105 } from "./1743714801105-MigrationName";
132
+ import { MigrationName1744804990712 } from "./1744804990712-MigrationName";
133
+ import { MigrationName1744809770336 } from "./1744809770336-MigrationName";
132
134
 
133
135
  export default [
134
136
  InitialMigration,
@@ -262,4 +264,6 @@ export default [
262
264
  MigrationName1743538648415,
263
265
  MigrationName1743692467814,
264
266
  MigrationName1743714801105,
267
+ MigrationName1744804990712,
268
+ MigrationName1744809770336,
265
269
  ];