@oneuptime/common 7.0.3035 → 7.0.3040

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 (97) hide show
  1. package/Models/DatabaseModels/IncidentNoteTemplate.ts +8 -0
  2. package/Models/DatabaseModels/IncidentTemplate.ts +8 -0
  3. package/Models/DatabaseModels/Index.ts +6 -0
  4. package/Models/DatabaseModels/ScheduledMaintenance.ts +70 -0
  5. package/Models/DatabaseModels/ScheduledMaintenanceTemplate.ts +988 -0
  6. package/Models/DatabaseModels/ScheduledMaintenanceTemplateOwnerTeam.ts +390 -0
  7. package/Models/DatabaseModels/ScheduledMaintenanceTemplateOwnerUser.ts +389 -0
  8. package/Server/Infrastructure/Postgres/SchemaMigrations/1725880508430-MigrationName.ts +269 -0
  9. package/Server/Infrastructure/Postgres/SchemaMigrations/1725881099935-MigrationName.ts +17 -0
  10. package/Server/Infrastructure/Postgres/SchemaMigrations/1725881475134-MigrationName.ts +35 -0
  11. package/Server/Infrastructure/Postgres/SchemaMigrations/1725884177663-MigrationName.ts +29 -0
  12. package/Server/Infrastructure/Postgres/SchemaMigrations/1725898621366-MigrationName.ts +29 -0
  13. package/Server/Infrastructure/Postgres/SchemaMigrations/1725900315712-MigrationName.ts +59 -0
  14. package/Server/Infrastructure/Postgres/SchemaMigrations/1725901024444-MigrationName.ts +23 -0
  15. package/Server/Infrastructure/Postgres/SchemaMigrations/1725975175669-MigrationName.ts +29 -0
  16. package/Server/Infrastructure/Postgres/SchemaMigrations/1725976810107-MigrationName.ts +17 -0
  17. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +18 -0
  18. package/Server/Services/IncidentService.ts +45 -0
  19. package/Server/Services/IncidentStateService.ts +47 -6
  20. package/Server/Services/Index.ts +8 -0
  21. package/Server/Services/ScheduledMaintenanceService.ts +308 -1
  22. package/Server/Services/ScheduledMaintenanceTemplateOwnerTeamService.ts +10 -0
  23. package/Server/Services/ScheduledMaintenanceTemplateOwnerUserService.ts +10 -0
  24. package/Server/Services/ScheduledMaintenanceTemplateService.ts +318 -0
  25. package/Types/Database/DatabaseProperty.ts +6 -3
  26. package/Types/Events/Recurring.ts +86 -41
  27. package/Types/Permission.ts +115 -1
  28. package/Types/SerializableObjectDictionary.ts +2 -0
  29. package/UI/Components/Detail/Detail.tsx +12 -3
  30. package/UI/Components/Detail/Field.ts +1 -1
  31. package/UI/Components/Events/RecurringArrayFieldElement.tsx +104 -0
  32. package/UI/Components/Events/RecurringArrayViewElement.tsx +37 -0
  33. package/UI/Components/Events/RecurringViewElement.tsx +2 -0
  34. package/build/dist/Models/DatabaseModels/IncidentNoteTemplate.js +8 -0
  35. package/build/dist/Models/DatabaseModels/IncidentNoteTemplate.js.map +1 -1
  36. package/build/dist/Models/DatabaseModels/IncidentTemplate.js +8 -0
  37. package/build/dist/Models/DatabaseModels/IncidentTemplate.js.map +1 -1
  38. package/build/dist/Models/DatabaseModels/Index.js +6 -0
  39. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  40. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +73 -0
  41. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js.map +1 -1
  42. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplate.js +1012 -0
  43. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplate.js.map +1 -0
  44. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplateOwnerTeam.js +402 -0
  45. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplateOwnerTeam.js.map +1 -0
  46. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplateOwnerUser.js +401 -0
  47. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplateOwnerUser.js.map +1 -0
  48. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1725880508430-MigrationName.js +98 -0
  49. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1725880508430-MigrationName.js.map +1 -0
  50. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1725881099935-MigrationName.js +12 -0
  51. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1725881099935-MigrationName.js.map +1 -0
  52. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1725881475134-MigrationName.js +18 -0
  53. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1725881475134-MigrationName.js.map +1 -0
  54. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1725884177663-MigrationName.js +16 -0
  55. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1725884177663-MigrationName.js.map +1 -0
  56. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1725898621366-MigrationName.js +16 -0
  57. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1725898621366-MigrationName.js.map +1 -0
  58. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1725900315712-MigrationName.js +26 -0
  59. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1725900315712-MigrationName.js.map +1 -0
  60. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1725901024444-MigrationName.js +14 -0
  61. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1725901024444-MigrationName.js.map +1 -0
  62. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1725975175669-MigrationName.js +16 -0
  63. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1725975175669-MigrationName.js.map +1 -0
  64. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1725976810107-MigrationName.js +12 -0
  65. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1725976810107-MigrationName.js.map +1 -0
  66. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +18 -0
  67. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  68. package/build/dist/Server/Services/IncidentService.js +34 -0
  69. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  70. package/build/dist/Server/Services/IncidentStateService.js +25 -2
  71. package/build/dist/Server/Services/IncidentStateService.js.map +1 -1
  72. package/build/dist/Server/Services/Index.js +7 -0
  73. package/build/dist/Server/Services/Index.js.map +1 -1
  74. package/build/dist/Server/Services/ScheduledMaintenanceService.js +209 -1
  75. package/build/dist/Server/Services/ScheduledMaintenanceService.js.map +1 -1
  76. package/build/dist/Server/Services/ScheduledMaintenanceTemplateOwnerTeamService.js +9 -0
  77. package/build/dist/Server/Services/ScheduledMaintenanceTemplateOwnerTeamService.js.map +1 -0
  78. package/build/dist/Server/Services/ScheduledMaintenanceTemplateOwnerUserService.js +9 -0
  79. package/build/dist/Server/Services/ScheduledMaintenanceTemplateOwnerUserService.js.map +1 -0
  80. package/build/dist/Server/Services/ScheduledMaintenanceTemplateService.js +203 -0
  81. package/build/dist/Server/Services/ScheduledMaintenanceTemplateService.js.map +1 -0
  82. package/build/dist/Types/Database/DatabaseProperty.js.map +1 -1
  83. package/build/dist/Types/Events/Recurring.js +47 -20
  84. package/build/dist/Types/Events/Recurring.js.map +1 -1
  85. package/build/dist/Types/Permission.js +97 -1
  86. package/build/dist/Types/Permission.js.map +1 -1
  87. package/build/dist/Types/SerializableObjectDictionary.js +2 -0
  88. package/build/dist/Types/SerializableObjectDictionary.js.map +1 -1
  89. package/build/dist/UI/Components/Detail/Detail.js +9 -1
  90. package/build/dist/UI/Components/Detail/Detail.js.map +1 -1
  91. package/build/dist/UI/Components/Events/RecurringArrayFieldElement.js +49 -0
  92. package/build/dist/UI/Components/Events/RecurringArrayFieldElement.js.map +1 -0
  93. package/build/dist/UI/Components/Events/RecurringArrayViewElement.js +18 -0
  94. package/build/dist/UI/Components/Events/RecurringArrayViewElement.js.map +1 -0
  95. package/build/dist/UI/Components/Events/RecurringViewElement.js +2 -1
  96. package/build/dist/UI/Components/Events/RecurringViewElement.js.map +1 -1
  97. package/package.json +2 -2
@@ -0,0 +1,988 @@
1
+ import Label from "./Label";
2
+ import Monitor from "./Monitor";
3
+ import MonitorStatus from "./MonitorStatus";
4
+ import Project from "./Project";
5
+ import ScheduledMaintenanceState from "./ScheduledMaintenanceState";
6
+ import StatusPage from "./StatusPage";
7
+ import User from "./User";
8
+ import BaseModel from "./DatabaseBaseModel/DatabaseBaseModel";
9
+ import Route from "../../Types/API/Route";
10
+ import ColumnAccessControl from "../../Types/Database/AccessControl/ColumnAccessControl";
11
+ import TableAccessControl from "../../Types/Database/AccessControl/TableAccessControl";
12
+ import AccessControlColumn from "../../Types/Database/AccessControlColumn";
13
+ import ColumnLength from "../../Types/Database/ColumnLength";
14
+ import ColumnType from "../../Types/Database/ColumnType";
15
+ import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
16
+ import EnableDocumentation from "../../Types/Database/EnableDocumentation";
17
+ import EnableWorkflow from "../../Types/Database/EnableWorkflow";
18
+ import MultiTenentQueryAllowed from "../../Types/Database/MultiTenentQueryAllowed";
19
+ import SlugifyColumn from "../../Types/Database/SlugifyColumn";
20
+ import TableColumn from "../../Types/Database/TableColumn";
21
+ import TableColumnType from "../../Types/Database/TableColumnType";
22
+ import TableMetadata from "../../Types/Database/TableMetadata";
23
+ import TenantColumn from "../../Types/Database/TenantColumn";
24
+ import IconProp from "../../Types/Icon/IconProp";
25
+ import { JSONObject } from "../../Types/JSON";
26
+ import ObjectID from "../../Types/ObjectID";
27
+ import Permission from "../../Types/Permission";
28
+ import {
29
+ Column,
30
+ Entity,
31
+ Index,
32
+ JoinColumn,
33
+ JoinTable,
34
+ ManyToMany,
35
+ ManyToOne,
36
+ } from "typeorm";
37
+ import Recurring from "../../Types/Events/Recurring";
38
+ import TableBillingAccessControl from "../../Types/Database/AccessControl/TableBillingAccessControl";
39
+ import { PlanType } from "../../Types/Billing/SubscriptionPlan";
40
+
41
+ @TableBillingAccessControl({
42
+ create: PlanType.Growth,
43
+ read: PlanType.Growth,
44
+ update: PlanType.Growth,
45
+ delete: PlanType.Growth,
46
+ })
47
+ @EnableDocumentation()
48
+ @AccessControlColumn("labels")
49
+ @MultiTenentQueryAllowed(true)
50
+ @TenantColumn("projectId")
51
+ @TableAccessControl({
52
+ create: [
53
+ Permission.ProjectOwner,
54
+ Permission.ProjectAdmin,
55
+ Permission.ProjectMember,
56
+ Permission.CreateScheduledMaintenanceTemplate,
57
+ ],
58
+ read: [
59
+ Permission.ProjectOwner,
60
+ Permission.ProjectAdmin,
61
+ Permission.ProjectMember,
62
+ Permission.ReadScheduledMaintenanceTemplate,
63
+ ],
64
+ delete: [
65
+ Permission.ProjectOwner,
66
+ Permission.ProjectAdmin,
67
+ Permission.ProjectMember,
68
+ Permission.DeleteScheduledMaintenanceTemplate,
69
+ ],
70
+ update: [
71
+ Permission.ProjectOwner,
72
+ Permission.ProjectAdmin,
73
+ Permission.ProjectMember,
74
+ Permission.EditScheduledMaintenanceTemplate,
75
+ ],
76
+ })
77
+ @CrudApiEndpoint(new Route("/scheduled-maintenance-template"))
78
+ @SlugifyColumn("name", "slug")
79
+ @Entity({
80
+ name: "ScheduledMaintenanceTemplate",
81
+ })
82
+ @EnableWorkflow({
83
+ create: true,
84
+ delete: true,
85
+ update: true,
86
+ read: true,
87
+ })
88
+ @TableMetadata({
89
+ singularName: "Scheduled Maintenance Template",
90
+ pluralName: "Scheduled Maintenance Templates",
91
+ icon: IconProp.Clock,
92
+ tableName: "ScheduledMaintenanceTemplate",
93
+ tableDescription: "Manage scheduled maintenance templates for your project",
94
+ })
95
+ export default class ScheduledMaintenanceTemplate extends BaseModel {
96
+ @ColumnAccessControl({
97
+ create: [
98
+ Permission.ProjectOwner,
99
+ Permission.ProjectAdmin,
100
+ Permission.ProjectMember,
101
+ Permission.CreateScheduledMaintenanceTemplate,
102
+ ],
103
+ read: [
104
+ Permission.ProjectOwner,
105
+ Permission.ProjectAdmin,
106
+ Permission.ProjectMember,
107
+ Permission.ReadScheduledMaintenanceTemplate,
108
+ ],
109
+ update: [],
110
+ })
111
+ @TableColumn({
112
+ manyToOneRelationColumn: "projectId",
113
+ type: TableColumnType.Entity,
114
+ modelType: Project,
115
+ title: "Project",
116
+ description: "Relation to Project Resource in which this object belongs",
117
+ })
118
+ @ManyToOne(
119
+ () => {
120
+ return Project;
121
+ },
122
+ {
123
+ eager: false,
124
+ nullable: true,
125
+ onDelete: "CASCADE",
126
+ orphanedRowAction: "nullify",
127
+ },
128
+ )
129
+ @JoinColumn({ name: "projectId" })
130
+ public project?: Project = undefined;
131
+
132
+ @ColumnAccessControl({
133
+ create: [
134
+ Permission.ProjectOwner,
135
+ Permission.ProjectAdmin,
136
+ Permission.ProjectMember,
137
+ Permission.CreateScheduledMaintenanceTemplate,
138
+ ],
139
+ read: [
140
+ Permission.ProjectOwner,
141
+ Permission.ProjectAdmin,
142
+ Permission.ProjectMember,
143
+ Permission.ReadScheduledMaintenanceTemplate,
144
+ ],
145
+ update: [],
146
+ })
147
+ @Index()
148
+ @TableColumn({
149
+ type: TableColumnType.ObjectID,
150
+ required: true,
151
+ canReadOnRelationQuery: true,
152
+ title: "Project ID",
153
+ description: "ID of your OneUptime Project in which this object belongs",
154
+ })
155
+ @Column({
156
+ type: ColumnType.ObjectID,
157
+ nullable: false,
158
+ transformer: ObjectID.getDatabaseTransformer(),
159
+ })
160
+ public projectId?: ObjectID = undefined;
161
+
162
+ @ColumnAccessControl({
163
+ create: [
164
+ Permission.ProjectOwner,
165
+ Permission.ProjectAdmin,
166
+ Permission.ProjectMember,
167
+ Permission.CreateScheduledMaintenanceTemplate,
168
+ ],
169
+ read: [
170
+ Permission.ProjectOwner,
171
+ Permission.ProjectAdmin,
172
+ Permission.ProjectMember,
173
+ Permission.ReadScheduledMaintenanceTemplate,
174
+ ],
175
+ update: [
176
+ Permission.ProjectOwner,
177
+ Permission.ProjectAdmin,
178
+ Permission.ProjectMember,
179
+ Permission.EditScheduledMaintenanceTemplate,
180
+ ],
181
+ })
182
+ @TableColumn({
183
+ required: true,
184
+ type: TableColumnType.ShortText,
185
+ canReadOnRelationQuery: true,
186
+ title: "Name",
187
+ description: "Name of the Scheduled Maintenance Template",
188
+ })
189
+ @Column({
190
+ nullable: false,
191
+ type: ColumnType.ShortText,
192
+ length: ColumnLength.ShortText,
193
+ })
194
+ public templateName?: string = undefined;
195
+
196
+ @ColumnAccessControl({
197
+ create: [
198
+ Permission.ProjectOwner,
199
+ Permission.ProjectAdmin,
200
+ Permission.ProjectMember,
201
+ Permission.CreateScheduledMaintenanceTemplate,
202
+ ],
203
+ read: [
204
+ Permission.ProjectOwner,
205
+ Permission.ProjectAdmin,
206
+ Permission.ProjectMember,
207
+ Permission.ReadScheduledMaintenanceTemplate,
208
+ ],
209
+ update: [
210
+ Permission.ProjectOwner,
211
+ Permission.ProjectAdmin,
212
+ Permission.ProjectMember,
213
+ Permission.EditScheduledMaintenanceTemplate,
214
+ ],
215
+ })
216
+ @TableColumn({
217
+ required: true,
218
+ type: TableColumnType.LongText,
219
+ canReadOnRelationQuery: true,
220
+ title: "Template Description",
221
+ description: "Description of the Scheduled Maintenance Template",
222
+ })
223
+ @Column({
224
+ nullable: false,
225
+ type: ColumnType.LongText,
226
+ length: ColumnLength.LongText,
227
+ })
228
+ public templateDescription?: string = undefined;
229
+
230
+ @ColumnAccessControl({
231
+ create: [
232
+ Permission.ProjectOwner,
233
+ Permission.ProjectAdmin,
234
+ Permission.ProjectMember,
235
+ Permission.CreateScheduledMaintenanceTemplate,
236
+ ],
237
+ read: [
238
+ Permission.ProjectOwner,
239
+ Permission.ProjectAdmin,
240
+ Permission.ProjectMember,
241
+ Permission.ReadScheduledMaintenanceTemplate,
242
+ ],
243
+ update: [
244
+ Permission.ProjectOwner,
245
+ Permission.ProjectAdmin,
246
+ Permission.ProjectMember,
247
+ Permission.EditScheduledMaintenanceTemplate,
248
+ ],
249
+ })
250
+ @Index()
251
+ @TableColumn({
252
+ required: true,
253
+ type: TableColumnType.ShortText,
254
+ canReadOnRelationQuery: true,
255
+ title: "Title",
256
+ description: "Title of this scheduled event.",
257
+ })
258
+ @Column({
259
+ nullable: false,
260
+ type: ColumnType.ShortText,
261
+ length: ColumnLength.ShortText,
262
+ })
263
+ public title?: string = undefined;
264
+
265
+ @ColumnAccessControl({
266
+ create: [
267
+ Permission.ProjectOwner,
268
+ Permission.ProjectAdmin,
269
+ Permission.ProjectMember,
270
+ Permission.CreateScheduledMaintenanceTemplate,
271
+ ],
272
+ read: [
273
+ Permission.ProjectOwner,
274
+ Permission.ProjectAdmin,
275
+ Permission.ProjectMember,
276
+ Permission.ReadScheduledMaintenanceTemplate,
277
+ ],
278
+ update: [
279
+ Permission.ProjectOwner,
280
+ Permission.ProjectAdmin,
281
+ Permission.ProjectMember,
282
+ Permission.EditScheduledMaintenanceTemplate,
283
+ ],
284
+ })
285
+ @TableColumn({
286
+ required: false,
287
+ type: TableColumnType.Markdown,
288
+ title: "Description",
289
+ description:
290
+ "Description of this scheduled event that will show up on Status Page. This is in markdown.",
291
+ })
292
+ @Column({
293
+ nullable: true,
294
+ type: ColumnType.Markdown,
295
+ })
296
+ public description?: string = undefined;
297
+
298
+ @Index()
299
+ @ColumnAccessControl({
300
+ create: [
301
+ Permission.ProjectOwner,
302
+ Permission.ProjectAdmin,
303
+ Permission.ProjectMember,
304
+ Permission.CreateScheduledMaintenanceTemplate,
305
+ ],
306
+ read: [
307
+ Permission.ProjectOwner,
308
+ Permission.ProjectAdmin,
309
+ Permission.ProjectMember,
310
+ Permission.ReadScheduledMaintenanceTemplate,
311
+ ],
312
+ update: [],
313
+ })
314
+ @TableColumn({
315
+ required: true,
316
+ unique: true,
317
+ type: TableColumnType.Slug,
318
+ title: "Slug",
319
+ description: "Friendly globally unique name for your object",
320
+ })
321
+ @Column({
322
+ nullable: false,
323
+ type: ColumnType.Slug,
324
+ length: ColumnLength.Slug,
325
+ unique: true,
326
+ })
327
+ public slug?: string = undefined;
328
+
329
+ @ColumnAccessControl({
330
+ create: [
331
+ Permission.ProjectOwner,
332
+ Permission.ProjectAdmin,
333
+ Permission.ProjectMember,
334
+ Permission.CreateScheduledMaintenanceTemplate,
335
+ ],
336
+ read: [
337
+ Permission.ProjectOwner,
338
+ Permission.ProjectAdmin,
339
+ Permission.ProjectMember,
340
+ Permission.ReadScheduledMaintenanceTemplate,
341
+ ],
342
+ update: [],
343
+ })
344
+ @TableColumn({
345
+ manyToOneRelationColumn: "createdByUserId",
346
+ type: TableColumnType.Entity,
347
+ modelType: User,
348
+ title: "Created by User",
349
+ description:
350
+ "Relation to User who created this object (if this object was created by a User)",
351
+ })
352
+ @ManyToOne(
353
+ () => {
354
+ return User;
355
+ },
356
+ {
357
+ eager: false,
358
+ nullable: true,
359
+ onDelete: "CASCADE",
360
+ orphanedRowAction: "nullify",
361
+ },
362
+ )
363
+ @JoinColumn({ name: "createdByUserId" })
364
+ public createdByUser?: User = undefined;
365
+
366
+ @ColumnAccessControl({
367
+ create: [
368
+ Permission.ProjectOwner,
369
+ Permission.ProjectAdmin,
370
+ Permission.ProjectMember,
371
+ Permission.CreateScheduledMaintenanceTemplate,
372
+ ],
373
+ read: [
374
+ Permission.ProjectOwner,
375
+ Permission.ProjectAdmin,
376
+ Permission.ProjectMember,
377
+ Permission.ReadScheduledMaintenanceTemplate,
378
+ ],
379
+ update: [],
380
+ })
381
+ @TableColumn({
382
+ type: TableColumnType.ObjectID,
383
+ title: "Created by User ID",
384
+ description:
385
+ "User ID who created this object (if this object was created by a User)",
386
+ })
387
+ @Column({
388
+ type: ColumnType.ObjectID,
389
+ nullable: true,
390
+ transformer: ObjectID.getDatabaseTransformer(),
391
+ })
392
+ public createdByUserId?: ObjectID = undefined;
393
+
394
+ @ColumnAccessControl({
395
+ create: [],
396
+ read: [],
397
+ update: [],
398
+ })
399
+ @TableColumn({
400
+ manyToOneRelationColumn: "deletedByUserId",
401
+ type: TableColumnType.Entity,
402
+ title: "Deleted by User",
403
+ description:
404
+ "Relation to User who deleted this object (if this object was deleted by a User)",
405
+ })
406
+ @ManyToOne(
407
+ () => {
408
+ return User;
409
+ },
410
+ {
411
+ cascade: false,
412
+ eager: false,
413
+ nullable: true,
414
+ onDelete: "CASCADE",
415
+ orphanedRowAction: "nullify",
416
+ },
417
+ )
418
+ @JoinColumn({ name: "deletedByUserId" })
419
+ public deletedByUser?: User = undefined;
420
+
421
+ @ColumnAccessControl({
422
+ create: [],
423
+ read: [],
424
+ update: [],
425
+ })
426
+ @TableColumn({
427
+ type: TableColumnType.ObjectID,
428
+ title: "Deleted by User ID",
429
+ description:
430
+ "User ID who deleted this object (if this object was deleted by a User)",
431
+ })
432
+ @Column({
433
+ type: ColumnType.ObjectID,
434
+ nullable: true,
435
+ transformer: ObjectID.getDatabaseTransformer(),
436
+ })
437
+ public deletedByUserId?: ObjectID = undefined;
438
+
439
+ @ColumnAccessControl({
440
+ create: [
441
+ Permission.ProjectOwner,
442
+ Permission.ProjectAdmin,
443
+ Permission.ProjectMember,
444
+ Permission.CreateScheduledMaintenanceTemplate,
445
+ ],
446
+ read: [
447
+ Permission.ProjectOwner,
448
+ Permission.ProjectAdmin,
449
+ Permission.ProjectMember,
450
+ Permission.ReadScheduledMaintenanceTemplate,
451
+ ],
452
+ update: [
453
+ Permission.ProjectOwner,
454
+ Permission.ProjectAdmin,
455
+ Permission.ProjectMember,
456
+ Permission.EditScheduledMaintenanceTemplate,
457
+ ],
458
+ })
459
+ @TableColumn({
460
+ required: false,
461
+ type: TableColumnType.EntityArray,
462
+ modelType: Monitor,
463
+ title: "Monitors",
464
+ description: "List of monitors attached to this event",
465
+ })
466
+ @ManyToMany(
467
+ () => {
468
+ return Monitor;
469
+ },
470
+ { eager: false },
471
+ )
472
+ @JoinTable({
473
+ name: "ScheduledMaintenanceTemplateMonitor",
474
+ inverseJoinColumn: {
475
+ name: "monitorId",
476
+ referencedColumnName: "_id",
477
+ },
478
+ joinColumn: {
479
+ name: "scheduledMaintenanceTemplateId",
480
+ referencedColumnName: "_id",
481
+ },
482
+ })
483
+ public monitors?: Array<Monitor> = undefined; // monitors affected by this scheduledMaintenance.
484
+
485
+ @ColumnAccessControl({
486
+ create: [
487
+ Permission.ProjectOwner,
488
+ Permission.ProjectAdmin,
489
+ Permission.ProjectMember,
490
+ Permission.CreateScheduledMaintenanceTemplate,
491
+ ],
492
+ read: [
493
+ Permission.ProjectOwner,
494
+ Permission.ProjectAdmin,
495
+ Permission.ProjectMember,
496
+ Permission.ReadScheduledMaintenanceTemplate,
497
+ ],
498
+ update: [
499
+ Permission.ProjectOwner,
500
+ Permission.ProjectAdmin,
501
+ Permission.ProjectMember,
502
+ Permission.EditScheduledMaintenanceTemplate,
503
+ ],
504
+ })
505
+ @TableColumn({
506
+ required: false,
507
+ type: TableColumnType.EntityArray,
508
+ modelType: StatusPage,
509
+ title: "Status Pages",
510
+ description: "List of status pages to show this event on",
511
+ })
512
+ @ManyToMany(
513
+ () => {
514
+ return StatusPage;
515
+ },
516
+ { eager: false },
517
+ )
518
+ @JoinTable({
519
+ name: "ScheduledMaintenanceTemplateStatusPage",
520
+ inverseJoinColumn: {
521
+ name: "statusPageId",
522
+ referencedColumnName: "_id",
523
+ },
524
+ joinColumn: {
525
+ name: "scheduledMaintenanceTemplateId",
526
+ referencedColumnName: "_id",
527
+ },
528
+ })
529
+ public statusPages?: Array<StatusPage> = undefined; // visible on which status page?
530
+
531
+ @ColumnAccessControl({
532
+ create: [
533
+ Permission.ProjectOwner,
534
+ Permission.ProjectAdmin,
535
+ Permission.ProjectMember,
536
+ Permission.CreateScheduledMaintenanceTemplate,
537
+ ],
538
+ read: [
539
+ Permission.ProjectOwner,
540
+ Permission.ProjectAdmin,
541
+ Permission.ProjectMember,
542
+ Permission.ReadScheduledMaintenanceTemplate,
543
+ ],
544
+ update: [
545
+ Permission.ProjectOwner,
546
+ Permission.ProjectAdmin,
547
+ Permission.ProjectMember,
548
+ Permission.EditScheduledMaintenanceTemplate,
549
+ ],
550
+ })
551
+ @TableColumn({
552
+ required: false,
553
+ type: TableColumnType.EntityArray,
554
+ modelType: Label,
555
+ title: "Labels",
556
+ description:
557
+ "Relation to Labels Array where this object is categorized in.",
558
+ })
559
+ @ManyToMany(
560
+ () => {
561
+ return Label;
562
+ },
563
+ { eager: false },
564
+ )
565
+ @JoinTable({
566
+ name: "ScheduledMaintenanceTemplateLabel",
567
+ inverseJoinColumn: {
568
+ name: "labelId",
569
+ referencedColumnName: "_id",
570
+ },
571
+ joinColumn: {
572
+ name: "scheduledMaintenanceTemplateId",
573
+ referencedColumnName: "_id",
574
+ },
575
+ })
576
+ public labels?: Array<Label> = undefined;
577
+
578
+ @ColumnAccessControl({
579
+ create: [
580
+ Permission.ProjectOwner,
581
+ Permission.ProjectAdmin,
582
+ Permission.ProjectMember,
583
+ Permission.CreateScheduledMaintenanceTemplate,
584
+ ],
585
+ read: [
586
+ Permission.ProjectOwner,
587
+ Permission.ProjectAdmin,
588
+ Permission.ProjectMember,
589
+ Permission.ReadScheduledMaintenanceTemplate,
590
+ ],
591
+ update: [],
592
+ })
593
+ @TableColumn({
594
+ manyToOneRelationColumn: "changeMonitorStatusToId",
595
+ type: TableColumnType.Entity,
596
+ modelType: ScheduledMaintenanceState,
597
+ title: "Change Monitor Status To",
598
+ description:
599
+ "Relation to Monitor Status Object. All monitors connected to this event will be changed to this status when the event is ongoing.",
600
+ })
601
+ @ManyToOne(
602
+ () => {
603
+ return MonitorStatus;
604
+ },
605
+ {
606
+ eager: false,
607
+ nullable: true,
608
+ orphanedRowAction: "nullify",
609
+ },
610
+ )
611
+ @JoinColumn({ name: "changeMonitorStatusToId" })
612
+ public changeMonitorStatusTo?: MonitorStatus = undefined;
613
+
614
+ @ColumnAccessControl({
615
+ create: [
616
+ Permission.ProjectOwner,
617
+ Permission.ProjectAdmin,
618
+ Permission.ProjectMember,
619
+ Permission.CreateScheduledMaintenanceTemplate,
620
+ ],
621
+ read: [
622
+ Permission.ProjectOwner,
623
+ Permission.ProjectAdmin,
624
+ Permission.ProjectMember,
625
+ Permission.ReadScheduledMaintenanceTemplate,
626
+ ],
627
+ update: [
628
+ Permission.ProjectOwner,
629
+ Permission.ProjectAdmin,
630
+ Permission.ProjectMember,
631
+ Permission.EditScheduledMaintenanceTemplate,
632
+ ],
633
+ })
634
+ @Index()
635
+ @TableColumn({
636
+ type: TableColumnType.ObjectID,
637
+ required: false,
638
+ title: "Change Monitor Status To ID",
639
+ description:
640
+ "Relation to Monitor Status Object ID. All monitors connected to this incident will be changed to this status when the event is ongoing.",
641
+ })
642
+ @Column({
643
+ type: ColumnType.ObjectID,
644
+ nullable: true,
645
+ transformer: ObjectID.getDatabaseTransformer(),
646
+ })
647
+ public changeMonitorStatusToId?: ObjectID = undefined;
648
+
649
+ // RECURRING EVENT PROPS
650
+
651
+ @TableColumn({
652
+ title: "Schedule First Event At",
653
+ type: TableColumnType.Date,
654
+ required: false,
655
+ description: "When would you like to schedule the first event?",
656
+ })
657
+ @ColumnAccessControl({
658
+ create: [
659
+ Permission.ProjectOwner,
660
+ Permission.ProjectAdmin,
661
+ Permission.ProjectMember,
662
+ Permission.CreateScheduledMaintenanceTemplate,
663
+ ],
664
+ read: [
665
+ Permission.ProjectOwner,
666
+ Permission.ProjectAdmin,
667
+ Permission.ProjectMember,
668
+ Permission.ReadScheduledMaintenanceTemplate,
669
+ ],
670
+ update: [
671
+ Permission.ProjectOwner,
672
+ Permission.ProjectAdmin,
673
+ Permission.ProjectMember,
674
+ Permission.EditScheduledMaintenanceTemplate,
675
+ ],
676
+ })
677
+ @Column({
678
+ nullable: true,
679
+ type: ColumnType.Date,
680
+ })
681
+ public firstEventScheduledAt?: Date = undefined;
682
+
683
+ @TableColumn({
684
+ title: "First Event Start At",
685
+ type: TableColumnType.Date,
686
+ required: false,
687
+ description: "When does the first event start?",
688
+ })
689
+ @ColumnAccessControl({
690
+ create: [
691
+ Permission.ProjectOwner,
692
+ Permission.ProjectAdmin,
693
+ Permission.ProjectMember,
694
+ Permission.CreateScheduledMaintenanceTemplate,
695
+ ],
696
+ read: [
697
+ Permission.ProjectOwner,
698
+ Permission.ProjectAdmin,
699
+ Permission.ProjectMember,
700
+ Permission.ReadScheduledMaintenanceTemplate,
701
+ ],
702
+ update: [
703
+ Permission.ProjectOwner,
704
+ Permission.ProjectAdmin,
705
+ Permission.ProjectMember,
706
+ Permission.EditScheduledMaintenanceTemplate,
707
+ ],
708
+ })
709
+ @Column({
710
+ nullable: true,
711
+ type: ColumnType.Date,
712
+ })
713
+ public firstEventStartsAt?: Date = undefined;
714
+
715
+ @TableColumn({
716
+ title: "First Event Ends At",
717
+ type: TableColumnType.Date,
718
+ required: false,
719
+ description: "When does the first event end?",
720
+ })
721
+ @ColumnAccessControl({
722
+ create: [
723
+ Permission.ProjectOwner,
724
+ Permission.ProjectAdmin,
725
+ Permission.ProjectMember,
726
+ Permission.CreateScheduledMaintenanceTemplate,
727
+ ],
728
+ read: [
729
+ Permission.ProjectOwner,
730
+ Permission.ProjectAdmin,
731
+ Permission.ProjectMember,
732
+ Permission.ReadScheduledMaintenanceTemplate,
733
+ ],
734
+ update: [
735
+ Permission.ProjectOwner,
736
+ Permission.ProjectAdmin,
737
+ Permission.ProjectMember,
738
+ Permission.EditScheduledMaintenanceTemplate,
739
+ ],
740
+ })
741
+ @Column({
742
+ nullable: true,
743
+ type: ColumnType.Date,
744
+ })
745
+ public firstEventEndsAt?: Date = undefined;
746
+
747
+ @ColumnAccessControl({
748
+ create: [
749
+ Permission.ProjectOwner,
750
+ Permission.ProjectAdmin,
751
+ Permission.ProjectMember,
752
+ Permission.CreateScheduledMaintenanceTemplate,
753
+ ],
754
+ read: [
755
+ Permission.ProjectOwner,
756
+ Permission.ProjectAdmin,
757
+ Permission.ProjectMember,
758
+ Permission.ReadScheduledMaintenanceTemplate,
759
+ ],
760
+ update: [
761
+ Permission.ProjectOwner,
762
+ Permission.ProjectAdmin,
763
+ Permission.ProjectMember,
764
+ Permission.EditScheduledMaintenanceTemplate,
765
+ ],
766
+ })
767
+ @TableColumn({
768
+ type: TableColumnType.JSON,
769
+ title: "Recurring Interval",
770
+ description: "How often should this event recur?",
771
+ })
772
+ @Column({
773
+ type: ColumnType.JSON,
774
+ nullable: true,
775
+ transformer: Recurring.getDatabaseTransformer(),
776
+ })
777
+ public recurringInterval?: Recurring = undefined;
778
+
779
+ @ColumnAccessControl({
780
+ create: [
781
+ Permission.ProjectOwner,
782
+ Permission.ProjectAdmin,
783
+ Permission.ProjectMember,
784
+ Permission.CreateScheduledMaintenanceTemplate,
785
+ ],
786
+ read: [
787
+ Permission.ProjectOwner,
788
+ Permission.ProjectAdmin,
789
+ Permission.ProjectMember,
790
+ Permission.ReadScheduledMaintenanceTemplate,
791
+ ],
792
+ update: [],
793
+ })
794
+ @TableColumn({
795
+ isDefaultValueColumn: false,
796
+ type: TableColumnType.Boolean,
797
+ title: "Is Recurring Event",
798
+ description: "Is this a recurring event?",
799
+ })
800
+ @Column({
801
+ type: ColumnType.Boolean,
802
+ default: false,
803
+ })
804
+ public isRecurringEvent?: boolean = undefined;
805
+
806
+ @ColumnAccessControl({
807
+ create: [
808
+ Permission.ProjectOwner,
809
+ Permission.ProjectAdmin,
810
+ Permission.ProjectMember,
811
+ Permission.CreateScheduledMaintenanceTemplate,
812
+ ],
813
+ read: [
814
+ Permission.ProjectOwner,
815
+ Permission.ProjectAdmin,
816
+ Permission.ProjectMember,
817
+ Permission.ReadScheduledMaintenanceTemplate,
818
+ ],
819
+ update: [],
820
+ })
821
+ @TableColumn({
822
+ isDefaultValueColumn: false,
823
+ type: TableColumnType.Date,
824
+ title: "Schedule Next Event At",
825
+ description: "When is the next event scheduled?",
826
+ })
827
+ @Column({
828
+ type: ColumnType.Date,
829
+ nullable: true,
830
+ })
831
+ public scheduleNextEventAt?: Date = undefined;
832
+
833
+ // Recurring Props End.
834
+
835
+ @ColumnAccessControl({
836
+ create: [
837
+ Permission.ProjectOwner,
838
+ Permission.ProjectAdmin,
839
+ Permission.ProjectMember,
840
+ Permission.CreateScheduledMaintenanceTemplate,
841
+ ],
842
+ read: [
843
+ Permission.ProjectOwner,
844
+ Permission.ProjectAdmin,
845
+ Permission.ProjectMember,
846
+ Permission.ReadScheduledMaintenanceTemplate,
847
+ ],
848
+ update: [],
849
+ })
850
+ @TableColumn({
851
+ isDefaultValueColumn: true,
852
+ type: TableColumnType.Boolean,
853
+ title: "Should subscribers be notified when event is created?",
854
+ description: "Should subscribers be notified about this event creation?",
855
+ })
856
+ @Column({
857
+ type: ColumnType.Boolean,
858
+ default: true,
859
+ })
860
+ public shouldStatusPageSubscribersBeNotifiedOnEventCreated?: boolean =
861
+ undefined;
862
+
863
+ @ColumnAccessControl({
864
+ create: [
865
+ Permission.ProjectOwner,
866
+ Permission.ProjectAdmin,
867
+ Permission.ProjectMember,
868
+ Permission.CreateScheduledMaintenanceTemplate,
869
+ ],
870
+ read: [
871
+ Permission.ProjectOwner,
872
+ Permission.ProjectAdmin,
873
+ Permission.ProjectMember,
874
+ Permission.ReadScheduledMaintenanceTemplate,
875
+ ],
876
+ update: [],
877
+ })
878
+ @TableColumn({
879
+ isDefaultValueColumn: true,
880
+ type: TableColumnType.Boolean,
881
+ title: "Should subscribers be notified when event is changed to ongoing?",
882
+ description:
883
+ "Should subscribers be notified about this event event is changed to ongoing?",
884
+ })
885
+ @Column({
886
+ type: ColumnType.Boolean,
887
+ default: true,
888
+ })
889
+ public shouldStatusPageSubscribersBeNotifiedWhenEventChangedToOngoing?: boolean =
890
+ undefined;
891
+
892
+ @ColumnAccessControl({
893
+ create: [
894
+ Permission.ProjectOwner,
895
+ Permission.ProjectAdmin,
896
+ Permission.ProjectMember,
897
+ Permission.CreateScheduledMaintenanceTemplate,
898
+ ],
899
+ read: [
900
+ Permission.ProjectOwner,
901
+ Permission.ProjectAdmin,
902
+ Permission.ProjectMember,
903
+ Permission.ReadScheduledMaintenanceTemplate,
904
+ ],
905
+ update: [],
906
+ })
907
+ @TableColumn({
908
+ isDefaultValueColumn: true,
909
+ type: TableColumnType.Boolean,
910
+ title: "Should subscribers be notified when event is changed to ended?",
911
+ description:
912
+ "Should subscribers be notified about this event event is changed to ended?",
913
+ })
914
+ @Column({
915
+ type: ColumnType.Boolean,
916
+ default: true,
917
+ })
918
+ public shouldStatusPageSubscribersBeNotifiedWhenEventChangedToEnded?: boolean =
919
+ undefined;
920
+
921
+ @ColumnAccessControl({
922
+ create: [
923
+ Permission.ProjectOwner,
924
+ Permission.ProjectAdmin,
925
+ Permission.ProjectMember,
926
+ Permission.CreateScheduledMaintenanceTemplate,
927
+ ],
928
+ read: [
929
+ Permission.ProjectOwner,
930
+ Permission.ProjectAdmin,
931
+ Permission.ProjectMember,
932
+ Permission.ReadScheduledMaintenanceTemplate,
933
+ ],
934
+ update: [
935
+ Permission.ProjectOwner,
936
+ Permission.ProjectAdmin,
937
+ Permission.ProjectMember,
938
+ Permission.EditScheduledMaintenanceTemplate,
939
+ ],
940
+ })
941
+ @TableColumn({
942
+ isDefaultValueColumn: false,
943
+ required: false,
944
+ type: TableColumnType.JSON,
945
+ title: "Custom Fields",
946
+ description: "Custom Fields on this resource.",
947
+ })
948
+ @Column({
949
+ type: ColumnType.JSON,
950
+ nullable: true,
951
+ })
952
+ public customFields?: JSONObject = undefined;
953
+
954
+ @ColumnAccessControl({
955
+ create: [
956
+ Permission.ProjectOwner,
957
+ Permission.ProjectAdmin,
958
+ Permission.ProjectMember,
959
+ Permission.CreateScheduledMaintenanceTemplate,
960
+ ],
961
+ read: [
962
+ Permission.ProjectOwner,
963
+ Permission.ProjectAdmin,
964
+ Permission.ProjectMember,
965
+ Permission.ReadScheduledMaintenanceTemplate,
966
+ ],
967
+ update: [
968
+ Permission.ProjectOwner,
969
+ Permission.ProjectAdmin,
970
+ Permission.ProjectMember,
971
+ Permission.EditScheduledMaintenanceTemplate,
972
+ ],
973
+ })
974
+ @TableColumn({
975
+ type: TableColumnType.JSON,
976
+ required: false,
977
+ isDefaultValueColumn: false,
978
+ title: "Subscriber notifications before the event",
979
+ description: "Should subscribers be notified before the event?",
980
+ })
981
+ @Column({
982
+ type: ColumnType.JSON,
983
+ nullable: true,
984
+ transformer: Recurring.getDatabaseTransformer(),
985
+ })
986
+ public sendSubscriberNotificationsOnBeforeTheEvent?: Array<Recurring> =
987
+ undefined;
988
+ }