@oneuptime/common 7.0.3985 → 7.0.3993

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 (37) hide show
  1. package/Models/AnalyticsModels/Metric.ts +0 -62
  2. package/Models/DatabaseModels/MetricType.ts +63 -0
  3. package/Models/DatabaseModels/OnCallDutyPolicySchedule.ts +137 -0
  4. package/Models/DatabaseModels/OnCallDutyPolicyScheduleLayer.ts +79 -0
  5. package/Server/Infrastructure/Postgres/SchemaMigrations/1743530326936-MigrationName.ts +59 -0
  6. package/Server/Infrastructure/Postgres/SchemaMigrations/1743538648415-MigrationName.ts +19 -0
  7. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +4 -0
  8. package/Server/Services/AlertService.ts +58 -36
  9. package/Server/Services/IncidentService.ts +49 -9
  10. package/Server/Utils/Monitor/MonitorResource.ts +93 -33
  11. package/Server/Utils/Telemetry/Telemetry.ts +32 -9
  12. package/UI/Components/ModelTable/BaseModelTable.tsx +4 -1
  13. package/build/dist/Models/AnalyticsModels/Metric.js +0 -56
  14. package/build/dist/Models/AnalyticsModels/Metric.js.map +1 -1
  15. package/build/dist/Models/DatabaseModels/MetricType.js +67 -0
  16. package/build/dist/Models/DatabaseModels/MetricType.js.map +1 -1
  17. package/build/dist/Models/DatabaseModels/OnCallDutyPolicySchedule.js +141 -0
  18. package/build/dist/Models/DatabaseModels/OnCallDutyPolicySchedule.js.map +1 -1
  19. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleLayer.js +82 -0
  20. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleLayer.js.map +1 -1
  21. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1743530326936-MigrationName.js +26 -0
  22. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1743530326936-MigrationName.js.map +1 -0
  23. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1743538648415-MigrationName.js +14 -0
  24. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1743538648415-MigrationName.js.map +1 -0
  25. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +4 -0
  26. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  27. package/build/dist/Server/Services/AlertService.js +52 -32
  28. package/build/dist/Server/Services/AlertService.js.map +1 -1
  29. package/build/dist/Server/Services/IncidentService.js +38 -9
  30. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  31. package/build/dist/Server/Utils/Monitor/MonitorResource.js +56 -31
  32. package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
  33. package/build/dist/Server/Utils/Telemetry/Telemetry.js +25 -4
  34. package/build/dist/Server/Utils/Telemetry/Telemetry.js.map +1 -1
  35. package/build/dist/UI/Components/ModelTable/BaseModelTable.js +4 -1
  36. package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
  37. package/package.json +2 -2
@@ -158,52 +158,6 @@ export default class Metric extends AnalyticsBaseModel {
158
158
  },
159
159
  }),
160
160
 
161
- new AnalyticsTableColumn({
162
- key: "description",
163
- title: "Description",
164
- description: "Description of the Metric",
165
- required: false,
166
- type: TableColumnType.Text,
167
- accessControl: {
168
- read: [
169
- Permission.ProjectOwner,
170
- Permission.ProjectAdmin,
171
- Permission.ProjectMember,
172
- Permission.ReadTelemetryServiceLog,
173
- ],
174
- create: [
175
- Permission.ProjectOwner,
176
- Permission.ProjectAdmin,
177
- Permission.ProjectMember,
178
- Permission.CreateTelemetryServiceLog,
179
- ],
180
- update: [],
181
- },
182
- }),
183
-
184
- new AnalyticsTableColumn({
185
- key: "unit",
186
- title: "Unit",
187
- description: "Unit of the Metric",
188
- required: false,
189
- type: TableColumnType.Text,
190
- accessControl: {
191
- read: [
192
- Permission.ProjectOwner,
193
- Permission.ProjectAdmin,
194
- Permission.ProjectMember,
195
- Permission.ReadTelemetryServiceLog,
196
- ],
197
- create: [
198
- Permission.ProjectOwner,
199
- Permission.ProjectAdmin,
200
- Permission.ProjectMember,
201
- Permission.CreateTelemetryServiceLog,
202
- ],
203
- update: [],
204
- },
205
- }),
206
-
207
161
  new AnalyticsTableColumn({
208
162
  key: "aggregationTemporality",
209
163
  title: "Aggregation Temporality",
@@ -603,22 +557,6 @@ export default class Metric extends AnalyticsBaseModel {
603
557
  this.setColumnValue("metricPointType", v);
604
558
  }
605
559
 
606
- public get description(): string | undefined {
607
- return this.getColumnValue("description") as string | undefined;
608
- }
609
-
610
- public set description(v: string | undefined) {
611
- this.setColumnValue("description", v);
612
- }
613
-
614
- public get unit(): string | undefined {
615
- return this.getColumnValue("unit") as string | undefined;
616
- }
617
-
618
- public set unit(v: string | undefined) {
619
- this.setColumnValue("unit", v);
620
- }
621
-
622
560
  public get isMonotonic(): boolean | undefined {
623
561
  return this.getColumnValue("isMonotonic") as boolean | undefined;
624
562
  }
@@ -219,6 +219,69 @@ export default class MetricType extends BaseModel {
219
219
  @Index()
220
220
  public name?: string = undefined;
221
221
 
222
+ @ColumnAccessControl({
223
+ create: [
224
+ Permission.ProjectOwner,
225
+ Permission.ProjectAdmin,
226
+ Permission.CreateTelemetryServiceMetrics,
227
+ ],
228
+ read: [
229
+ Permission.ProjectOwner,
230
+ Permission.ProjectAdmin,
231
+ Permission.ProjectMember,
232
+ Permission.ReadTelemetryServiceMetrics,
233
+ ],
234
+ update: [
235
+ Permission.ProjectOwner,
236
+ Permission.ProjectAdmin,
237
+ Permission.EditTelemetryServiceMetrics,
238
+ ],
239
+ })
240
+ @TableColumn({
241
+ required: false,
242
+ type: TableColumnType.VeryLongText,
243
+ canReadOnRelationQuery: true,
244
+ title: "Description",
245
+ description: "Metric description",
246
+ })
247
+ @Column({
248
+ nullable: true,
249
+ type: ColumnType.VeryLongText,
250
+ })
251
+ public description?: string = undefined;
252
+
253
+ @ColumnAccessControl({
254
+ create: [
255
+ Permission.ProjectOwner,
256
+ Permission.ProjectAdmin,
257
+ Permission.CreateTelemetryServiceMetrics,
258
+ ],
259
+ read: [
260
+ Permission.ProjectOwner,
261
+ Permission.ProjectAdmin,
262
+ Permission.ProjectMember,
263
+ Permission.ReadTelemetryServiceMetrics,
264
+ ],
265
+ update: [
266
+ Permission.ProjectOwner,
267
+ Permission.ProjectAdmin,
268
+ Permission.EditTelemetryServiceMetrics,
269
+ ],
270
+ })
271
+ @TableColumn({
272
+ required: false,
273
+ type: TableColumnType.VeryLongText,
274
+ canReadOnRelationQuery: true,
275
+ title: "Description",
276
+ description: "Metric description",
277
+ })
278
+ @Column({
279
+ nullable: true,
280
+ type: ColumnType.ShortText,
281
+ length: ColumnLength.ShortText,
282
+ })
283
+ public unit?: string = undefined;
284
+
222
285
  @ColumnAccessControl({
223
286
  create: [
224
287
  Permission.ProjectOwner,
@@ -400,4 +400,141 @@ export default class OnCallDutyPolicySchedule extends BaseModel {
400
400
  transformer: ObjectID.getDatabaseTransformer(),
401
401
  })
402
402
  public deletedByUserId?: ObjectID = undefined;
403
+
404
+ @ColumnAccessControl({
405
+ create: [
406
+ Permission.ProjectOwner,
407
+ Permission.ProjectAdmin,
408
+ Permission.ProjectMember,
409
+ Permission.CreateProjectOnCallDutyPolicySchedule,
410
+ ],
411
+ read: [
412
+ Permission.ProjectOwner,
413
+ Permission.ProjectAdmin,
414
+ Permission.ProjectMember,
415
+ Permission.ReadProjectOnCallDutyPolicySchedule,
416
+ ],
417
+ update: [],
418
+ })
419
+ @TableColumn({
420
+ manyToOneRelationColumn: "currentUserIdOnRoster",
421
+ type: TableColumnType.Entity,
422
+ modelType: User,
423
+ title: "Current User On Roster",
424
+ description: "Relation to User who is currently on roster",
425
+ })
426
+ @ManyToOne(
427
+ () => {
428
+ return User;
429
+ },
430
+ {
431
+ eager: false,
432
+ nullable: true,
433
+ onDelete: "SET NULL",
434
+ orphanedRowAction: "nullify",
435
+ },
436
+ )
437
+ @JoinColumn({ name: "currentUserIdOnRoster" })
438
+ public currentUserOnRoster?: User = undefined;
439
+
440
+ @ColumnAccessControl({
441
+ create: [],
442
+ read: [
443
+ Permission.ProjectOwner,
444
+ Permission.ProjectAdmin,
445
+ Permission.ProjectMember,
446
+ Permission.ReadProjectOnCallDutyPolicySchedule,
447
+ ],
448
+ update: [],
449
+ })
450
+ @TableColumn({
451
+ type: TableColumnType.ObjectID,
452
+ title: "Current User ID On Roster",
453
+ description: "User ID who is currently on roster",
454
+ })
455
+ @Column({
456
+ type: ColumnType.ObjectID,
457
+ nullable: true,
458
+ transformer: ObjectID.getDatabaseTransformer(),
459
+ })
460
+ public currentUserIdOnRoster?: ObjectID = undefined;
461
+
462
+ @ColumnAccessControl({
463
+ create: [
464
+ Permission.ProjectOwner,
465
+ Permission.ProjectAdmin,
466
+ Permission.ProjectMember,
467
+ Permission.CreateProjectOnCallDutyPolicySchedule,
468
+ ],
469
+ read: [
470
+ Permission.ProjectOwner,
471
+ Permission.ProjectAdmin,
472
+ Permission.ProjectMember,
473
+ Permission.ReadProjectOnCallDutyPolicySchedule,
474
+ ],
475
+ update: [],
476
+ })
477
+ @TableColumn({
478
+ manyToOneRelationColumn: "nextUserIdOnRoster",
479
+ type: TableColumnType.Entity,
480
+ modelType: User,
481
+ title: "Next User On Roster",
482
+ description: "Relation to User who is next on roster",
483
+ })
484
+ @ManyToOne(
485
+ () => {
486
+ return User;
487
+ },
488
+ {
489
+ eager: false,
490
+ nullable: true,
491
+ onDelete: "SET NULL",
492
+ orphanedRowAction: "nullify",
493
+ },
494
+ )
495
+ @JoinColumn({ name: "nextUserIdOnRoster" })
496
+ public nextUserOnRoster?: User = undefined;
497
+
498
+ @ColumnAccessControl({
499
+ create: [],
500
+ read: [
501
+ Permission.ProjectOwner,
502
+ Permission.ProjectAdmin,
503
+ Permission.ProjectMember,
504
+ Permission.ReadProjectOnCallDutyPolicySchedule,
505
+ ],
506
+ update: [],
507
+ })
508
+ @TableColumn({
509
+ type: TableColumnType.ObjectID,
510
+ title: "Next User ID On Roster",
511
+ description: "Next ID who is currently on roster",
512
+ })
513
+ @Column({
514
+ type: ColumnType.ObjectID,
515
+ nullable: true,
516
+ transformer: ObjectID.getDatabaseTransformer(),
517
+ })
518
+ public nextUserIdOnRoster?: ObjectID = undefined;
519
+
520
+ @ColumnAccessControl({
521
+ create: [],
522
+ read: [
523
+ Permission.ProjectOwner,
524
+ Permission.ProjectAdmin,
525
+ Permission.ProjectMember,
526
+ Permission.ReadProjectOnCallDutyPolicySchedule,
527
+ ],
528
+ update: [],
529
+ })
530
+ @TableColumn({
531
+ type: TableColumnType.Date,
532
+ title: "Roster Next Handoff At",
533
+ description: "When is the next roster handoff for this schedule?",
534
+ })
535
+ @Column({
536
+ type: ColumnType.Date,
537
+ nullable: true,
538
+ })
539
+ public rosterNextHandoffAt?: Date = undefined;
403
540
  }
@@ -552,4 +552,83 @@ export default class OnCallDutyPolicyScheduleLayer extends BaseModel {
552
552
  transformer: RestrictionTimes.getDatabaseTransformer(),
553
553
  })
554
554
  public restrictionTimes?: RestrictionTimes = undefined;
555
+
556
+ @ColumnAccessControl({
557
+ create: [
558
+ Permission.ProjectOwner,
559
+ Permission.ProjectAdmin,
560
+ Permission.ProjectMember,
561
+ Permission.CreateProjectOnCallDutyPolicySchedule,
562
+ ],
563
+ read: [
564
+ Permission.ProjectOwner,
565
+ Permission.ProjectAdmin,
566
+ Permission.ProjectMember,
567
+ Permission.ReadProjectOnCallDutyPolicySchedule,
568
+ ],
569
+ update: [],
570
+ })
571
+ @TableColumn({
572
+ manyToOneRelationColumn: "nextUserIdOnLayer",
573
+ type: TableColumnType.Entity,
574
+ modelType: User,
575
+ title: "Next User On Layer",
576
+ description: "Relation to User who is next on layer",
577
+ })
578
+ @ManyToOne(
579
+ () => {
580
+ return User;
581
+ },
582
+ {
583
+ eager: false,
584
+ nullable: true,
585
+ onDelete: "SET NULL",
586
+ orphanedRowAction: "nullify",
587
+ },
588
+ )
589
+ @JoinColumn({ name: "nextUserIdOnLayer" })
590
+ public nextUserOnLayer?: User = undefined;
591
+
592
+ @ColumnAccessControl({
593
+ create: [],
594
+ read: [
595
+ Permission.ProjectOwner,
596
+ Permission.ProjectAdmin,
597
+ Permission.ProjectMember,
598
+ Permission.ReadProjectOnCallDutyPolicySchedule,
599
+ ],
600
+ update: [],
601
+ })
602
+ @TableColumn({
603
+ type: TableColumnType.ObjectID,
604
+ title: "Next User ID On Layer",
605
+ description: "Next ID who is currently on layer",
606
+ })
607
+ @Column({
608
+ type: ColumnType.ObjectID,
609
+ nullable: true,
610
+ transformer: ObjectID.getDatabaseTransformer(),
611
+ })
612
+ public nextUserIdOnLayer?: ObjectID = undefined;
613
+
614
+ @ColumnAccessControl({
615
+ create: [],
616
+ read: [
617
+ Permission.ProjectOwner,
618
+ Permission.ProjectAdmin,
619
+ Permission.ProjectMember,
620
+ Permission.ReadProjectOnCallDutyPolicySchedule,
621
+ ],
622
+ update: [],
623
+ })
624
+ @TableColumn({
625
+ type: TableColumnType.Date,
626
+ title: "Layer Next Handoff At",
627
+ description: "When is the next layer handoff for this schedule?",
628
+ })
629
+ @Column({
630
+ type: ColumnType.Date,
631
+ nullable: true,
632
+ })
633
+ public layerNextHandoffAt?: Date = undefined;
555
634
  }
@@ -0,0 +1,59 @@
1
+ import { MigrationInterface, QueryRunner } from "typeorm";
2
+
3
+ export class MigrationName1743530326936 implements MigrationInterface {
4
+ public name = "MigrationName1743530326936";
5
+
6
+ public async up(queryRunner: QueryRunner): Promise<void> {
7
+ await queryRunner.query(
8
+ `ALTER TABLE "OnCallDutyPolicySchedule" ADD "currentUserIdOnRoster" uuid`,
9
+ );
10
+ await queryRunner.query(
11
+ `ALTER TABLE "OnCallDutyPolicySchedule" ADD "nextUserIdOnRoster" uuid`,
12
+ );
13
+ await queryRunner.query(
14
+ `ALTER TABLE "OnCallDutyPolicySchedule" ADD "rosterNextHandoffAt" TIMESTAMP WITH TIME ZONE`,
15
+ );
16
+ await queryRunner.query(
17
+ `ALTER TABLE "OnCallDutyPolicyScheduleLayer" ADD "nextUserIdOnLayer" uuid`,
18
+ );
19
+ await queryRunner.query(
20
+ `ALTER TABLE "OnCallDutyPolicyScheduleLayer" ADD "layerNextHandoffAt" TIMESTAMP WITH TIME ZONE`,
21
+ );
22
+ await queryRunner.query(
23
+ `ALTER TABLE "OnCallDutyPolicySchedule" ADD CONSTRAINT "FK_49ffa461b854ad28bebd3661db5" FOREIGN KEY ("currentUserIdOnRoster") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`,
24
+ );
25
+ await queryRunner.query(
26
+ `ALTER TABLE "OnCallDutyPolicySchedule" ADD CONSTRAINT "FK_775f3837d5094d9d8f433596238" FOREIGN KEY ("nextUserIdOnRoster") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`,
27
+ );
28
+ await queryRunner.query(
29
+ `ALTER TABLE "OnCallDutyPolicyScheduleLayer" ADD CONSTRAINT "FK_815023b155d367f28cc6855b843" FOREIGN KEY ("nextUserIdOnLayer") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`,
30
+ );
31
+ }
32
+
33
+ public async down(queryRunner: QueryRunner): Promise<void> {
34
+ await queryRunner.query(
35
+ `ALTER TABLE "OnCallDutyPolicyScheduleLayer" DROP CONSTRAINT "FK_815023b155d367f28cc6855b843"`,
36
+ );
37
+ await queryRunner.query(
38
+ `ALTER TABLE "OnCallDutyPolicySchedule" DROP CONSTRAINT "FK_775f3837d5094d9d8f433596238"`,
39
+ );
40
+ await queryRunner.query(
41
+ `ALTER TABLE "OnCallDutyPolicySchedule" DROP CONSTRAINT "FK_49ffa461b854ad28bebd3661db5"`,
42
+ );
43
+ await queryRunner.query(
44
+ `ALTER TABLE "OnCallDutyPolicyScheduleLayer" DROP COLUMN "layerNextHandoffAt"`,
45
+ );
46
+ await queryRunner.query(
47
+ `ALTER TABLE "OnCallDutyPolicyScheduleLayer" DROP COLUMN "nextUserIdOnLayer"`,
48
+ );
49
+ await queryRunner.query(
50
+ `ALTER TABLE "OnCallDutyPolicySchedule" DROP COLUMN "rosterNextHandoffAt"`,
51
+ );
52
+ await queryRunner.query(
53
+ `ALTER TABLE "OnCallDutyPolicySchedule" DROP COLUMN "nextUserIdOnRoster"`,
54
+ );
55
+ await queryRunner.query(
56
+ `ALTER TABLE "OnCallDutyPolicySchedule" DROP COLUMN "currentUserIdOnRoster"`,
57
+ );
58
+ }
59
+ }
@@ -0,0 +1,19 @@
1
+ import { MigrationInterface, QueryRunner } from "typeorm";
2
+
3
+ export class MigrationName1743538648415 implements MigrationInterface {
4
+ public name = "MigrationName1743538648415";
5
+
6
+ public async up(queryRunner: QueryRunner): Promise<void> {
7
+ await queryRunner.query(`ALTER TABLE "MetricType" ADD "description" text`);
8
+ await queryRunner.query(
9
+ `ALTER TABLE "MetricType" ADD "unit" character varying(100)`,
10
+ );
11
+ }
12
+
13
+ public async down(queryRunner: QueryRunner): Promise<void> {
14
+ await queryRunner.query(`ALTER TABLE "MetricType" DROP COLUMN "unit"`);
15
+ await queryRunner.query(
16
+ `ALTER TABLE "MetricType" DROP COLUMN "description"`,
17
+ );
18
+ }
19
+ }
@@ -125,6 +125,8 @@ import { MigrationName1743006662678 } from "./1743006662678-MigrationName";
125
125
  import { MigrationName1743186793413 } from "./1743186793413-MigrationName";
126
126
  import { MigrationName1743518485566 } from "./1743518485566-MigrationName";
127
127
  import { MigrationName1743521461137 } from "./1743521461137-MigrationName";
128
+ import { MigrationName1743530326936 } from "./1743530326936-MigrationName";
129
+ import { MigrationName1743538648415 } from "./1743538648415-MigrationName";
128
130
 
129
131
  export default [
130
132
  InitialMigration,
@@ -254,4 +256,6 @@ export default [
254
256
  MigrationName1743186793413,
255
257
  MigrationName1743518485566,
256
258
  MigrationName1743521461137,
259
+ MigrationName1743530326936,
260
+ MigrationName1743538648415,
257
261
  ];