@oneuptime/common 10.0.36 → 10.0.38

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 (93) hide show
  1. package/Models/DatabaseModels/Index.ts +2 -0
  2. package/Models/DatabaseModels/WorkspaceNotificationSummary.ts +819 -0
  3. package/Server/API/StatusPageAPI.ts +7 -0
  4. package/Server/API/TelemetryAPI.ts +10 -0
  5. package/Server/API/WorkspaceNotificationSummaryAPI.ts +67 -0
  6. package/Server/Infrastructure/Postgres/SchemaMigrations/1774355321449-MigrationName.ts +51 -0
  7. package/Server/Infrastructure/Postgres/SchemaMigrations/1774357353502-MigrationName.ts +29 -0
  8. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +4 -0
  9. package/Server/Middleware/MasterAdminAuthorization.ts +55 -0
  10. package/Server/Services/Index.ts +2 -0
  11. package/Server/Services/LogAggregationService.ts +24 -1
  12. package/Server/Services/WorkspaceNotificationSummaryService.ts +1450 -0
  13. package/Server/Utils/Greenlock/Greenlock.ts +1 -0
  14. package/Server/Utils/Telemetry/Telemetry.ts +38 -19
  15. package/Types/Permission.ts +42 -0
  16. package/Types/Workspace/NotificationSummary/WorkspaceNotificationSummaryItem.ts +13 -0
  17. package/Types/Workspace/NotificationSummary/WorkspaceNotificationSummaryType.ts +8 -0
  18. package/UI/Components/Charts/Area/AreaChart.tsx +81 -0
  19. package/UI/Components/Charts/ChartGroup/ChartGroup.tsx +106 -63
  20. package/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.tsx +986 -0
  21. package/UI/Components/Charts/ChartLibrary/LineChart/LineChart.tsx +1 -1
  22. package/UI/Components/Charts/ChartLibrary/Utils/ChartColors.ts +18 -1
  23. package/UI/Components/Charts/Utils/XAxis.ts +26 -21
  24. package/UI/Components/ConditionsTable/ConditionsTable.tsx +86 -67
  25. package/UI/Components/Dictionary/DictionaryOfStingsViewer.tsx +48 -28
  26. package/UI/Components/Filters/FiltersForm.tsx +19 -13
  27. package/UI/Components/GanttChart/Bar/Index.tsx +23 -5
  28. package/UI/Components/InfoCard/InfoCard.tsx +3 -1
  29. package/UI/Components/LogsViewer/LogsViewer.tsx +9 -4
  30. package/UI/Components/LogsViewer/components/ActiveFilterChips.tsx +29 -2
  31. package/UI/Components/LogsViewer/types.ts +1 -0
  32. package/build/dist/Models/DatabaseModels/Index.js +2 -0
  33. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  34. package/build/dist/Models/DatabaseModels/WorkspaceNotificationSummary.js +857 -0
  35. package/build/dist/Models/DatabaseModels/WorkspaceNotificationSummary.js.map +1 -0
  36. package/build/dist/Server/API/StatusPageAPI.js +2 -0
  37. package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
  38. package/build/dist/Server/API/TelemetryAPI.js +8 -0
  39. package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
  40. package/build/dist/Server/API/WorkspaceNotificationSummaryAPI.js +40 -0
  41. package/build/dist/Server/API/WorkspaceNotificationSummaryAPI.js.map +1 -0
  42. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1774355321449-MigrationName.js +24 -0
  43. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1774355321449-MigrationName.js.map +1 -0
  44. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1774357353502-MigrationName.js +16 -0
  45. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1774357353502-MigrationName.js.map +1 -0
  46. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +4 -0
  47. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  48. package/build/dist/Server/Middleware/MasterAdminAuthorization.js +25 -0
  49. package/build/dist/Server/Middleware/MasterAdminAuthorization.js.map +1 -0
  50. package/build/dist/Server/Services/Index.js +2 -0
  51. package/build/dist/Server/Services/Index.js.map +1 -1
  52. package/build/dist/Server/Services/LogAggregationService.js +12 -0
  53. package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
  54. package/build/dist/Server/Services/WorkspaceNotificationSummaryService.js +1122 -0
  55. package/build/dist/Server/Services/WorkspaceNotificationSummaryService.js.map +1 -0
  56. package/build/dist/Server/Utils/Greenlock/Greenlock.js +1 -0
  57. package/build/dist/Server/Utils/Greenlock/Greenlock.js.map +1 -1
  58. package/build/dist/Server/Utils/Telemetry/Telemetry.js +29 -15
  59. package/build/dist/Server/Utils/Telemetry/Telemetry.js.map +1 -1
  60. package/build/dist/Types/Permission.js +36 -0
  61. package/build/dist/Types/Permission.js.map +1 -1
  62. package/build/dist/Types/Workspace/NotificationSummary/WorkspaceNotificationSummaryItem.js +14 -0
  63. package/build/dist/Types/Workspace/NotificationSummary/WorkspaceNotificationSummaryItem.js.map +1 -0
  64. package/build/dist/Types/Workspace/NotificationSummary/WorkspaceNotificationSummaryType.js +9 -0
  65. package/build/dist/Types/Workspace/NotificationSummary/WorkspaceNotificationSummaryType.js.map +1 -0
  66. package/build/dist/UI/Components/Charts/Area/AreaChart.js +39 -0
  67. package/build/dist/UI/Components/Charts/Area/AreaChart.js.map +1 -0
  68. package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js +28 -9
  69. package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js.map +1 -1
  70. package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js +376 -0
  71. package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js.map +1 -0
  72. package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js +1 -1
  73. package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js.map +1 -1
  74. package/build/dist/UI/Components/Charts/ChartLibrary/Utils/ChartColors.js +15 -0
  75. package/build/dist/UI/Components/Charts/ChartLibrary/Utils/ChartColors.js.map +1 -1
  76. package/build/dist/UI/Components/Charts/Utils/XAxis.js +25 -21
  77. package/build/dist/UI/Components/Charts/Utils/XAxis.js.map +1 -1
  78. package/build/dist/UI/Components/ConditionsTable/ConditionsTable.js +51 -30
  79. package/build/dist/UI/Components/ConditionsTable/ConditionsTable.js.map +1 -1
  80. package/build/dist/UI/Components/Dictionary/DictionaryOfStingsViewer.js +23 -11
  81. package/build/dist/UI/Components/Dictionary/DictionaryOfStingsViewer.js.map +1 -1
  82. package/build/dist/UI/Components/Filters/FiltersForm.js +10 -6
  83. package/build/dist/UI/Components/Filters/FiltersForm.js.map +1 -1
  84. package/build/dist/UI/Components/GanttChart/Bar/Index.js +15 -3
  85. package/build/dist/UI/Components/GanttChart/Bar/Index.js.map +1 -1
  86. package/build/dist/UI/Components/InfoCard/InfoCard.js +1 -1
  87. package/build/dist/UI/Components/InfoCard/InfoCard.js.map +1 -1
  88. package/build/dist/UI/Components/LogsViewer/LogsViewer.js +5 -1
  89. package/build/dist/UI/Components/LogsViewer/LogsViewer.js.map +1 -1
  90. package/build/dist/UI/Components/LogsViewer/components/ActiveFilterChips.js +17 -2
  91. package/build/dist/UI/Components/LogsViewer/components/ActiveFilterChips.js.map +1 -1
  92. package/build/dist/UI/Components/LogsViewer/types.js.map +1 -1
  93. package/package.json +1 -1
@@ -0,0 +1,819 @@
1
+ import Project from "./Project";
2
+ import User from "./User";
3
+ import BaseModel from "./DatabaseBaseModel/DatabaseBaseModel";
4
+ import Route from "../../Types/API/Route";
5
+ import ColumnAccessControl from "../../Types/Database/AccessControl/ColumnAccessControl";
6
+ import TableAccessControl from "../../Types/Database/AccessControl/TableAccessControl";
7
+ import ColumnLength from "../../Types/Database/ColumnLength";
8
+ import ColumnType from "../../Types/Database/ColumnType";
9
+ import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
10
+ import TableColumn from "../../Types/Database/TableColumn";
11
+ import TableColumnType from "../../Types/Database/TableColumnType";
12
+ import TableMetadata from "../../Types/Database/TableMetadata";
13
+ import TenantColumn from "../../Types/Database/TenantColumn";
14
+ import IconProp from "../../Types/Icon/IconProp";
15
+ import ObjectID from "../../Types/ObjectID";
16
+ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
17
+ import WorkspaceType from "../../Types/Workspace/WorkspaceType";
18
+ import WorkspaceNotificationSummaryType from "../../Types/Workspace/NotificationSummary/WorkspaceNotificationSummaryType";
19
+ import WorkspaceNotificationSummaryItem from "../../Types/Workspace/NotificationSummary/WorkspaceNotificationSummaryItem";
20
+ import Permission from "../../Types/Permission";
21
+ import TableBillingAccessControl from "../../Types/Database/AccessControl/TableBillingAccessControl";
22
+ import { PlanType } from "../../Types/Billing/SubscriptionPlan";
23
+ import EnableDocumentation from "../../Types/Database/EnableDocumentation";
24
+ import Recurring from "../../Types/Events/Recurring";
25
+ import NotificationRuleCondition from "../../Types/Workspace/NotificationRules/NotificationRuleCondition";
26
+ import FilterCondition from "../../Types/Filter/FilterCondition";
27
+
28
+ @EnableDocumentation()
29
+ @TenantColumn("projectId")
30
+ @TableAccessControl({
31
+ create: [
32
+ Permission.ProjectAdmin,
33
+ Permission.ProjectOwner,
34
+ Permission.ProjectMember,
35
+ Permission.CreateWorkspaceNotificationSummary,
36
+ ],
37
+ read: [
38
+ Permission.ProjectAdmin,
39
+ Permission.ProjectOwner,
40
+ Permission.ProjectMember,
41
+ Permission.ReadWorkspaceNotificationSummary,
42
+ Permission.ReadAllProjectResources,
43
+ ],
44
+ delete: [
45
+ Permission.ProjectAdmin,
46
+ Permission.ProjectOwner,
47
+ Permission.ProjectMember,
48
+ Permission.DeleteWorkspaceNotificationSummary,
49
+ ],
50
+ update: [
51
+ Permission.ProjectAdmin,
52
+ Permission.ProjectOwner,
53
+ Permission.ProjectMember,
54
+ Permission.EditWorkspaceNotificationSummary,
55
+ ],
56
+ })
57
+ @TableBillingAccessControl({
58
+ create: PlanType.Growth,
59
+ read: PlanType.Growth,
60
+ update: PlanType.Growth,
61
+ delete: PlanType.Growth,
62
+ })
63
+ @CrudApiEndpoint(new Route("/workspace-notification-summary"))
64
+ @Entity({
65
+ name: "WorkspaceNotificationSummary",
66
+ })
67
+ @TableMetadata({
68
+ tableName: "WorkspaceNotificationSummary",
69
+ singularName: "Workspace Notification Summary",
70
+ pluralName: "Workspace Notification Summaries",
71
+ icon: IconProp.ChartBar,
72
+ tableDescription:
73
+ "Recurring summary reports for incidents and alerts sent to Slack or Microsoft Teams",
74
+ })
75
+ class WorkspaceNotificationSummary extends BaseModel {
76
+ @ColumnAccessControl({
77
+ create: [
78
+ Permission.ProjectAdmin,
79
+ Permission.ProjectOwner,
80
+ Permission.ProjectMember,
81
+ Permission.CreateWorkspaceNotificationSummary,
82
+ ],
83
+ read: [
84
+ Permission.ProjectAdmin,
85
+ Permission.ProjectOwner,
86
+ Permission.ProjectMember,
87
+ Permission.ReadWorkspaceNotificationSummary,
88
+ Permission.ReadAllProjectResources,
89
+ ],
90
+ update: [],
91
+ })
92
+ @TableColumn({
93
+ manyToOneRelationColumn: "projectId",
94
+ type: TableColumnType.Entity,
95
+ modelType: Project,
96
+ title: "Project",
97
+ description: "Relation to Project Resource in which this object belongs",
98
+ })
99
+ @ManyToOne(
100
+ () => {
101
+ return Project;
102
+ },
103
+ {
104
+ eager: false,
105
+ nullable: true,
106
+ onDelete: "CASCADE",
107
+ orphanedRowAction: "nullify",
108
+ },
109
+ )
110
+ @JoinColumn({ name: "projectId" })
111
+ public project?: Project = undefined;
112
+
113
+ @ColumnAccessControl({
114
+ create: [
115
+ Permission.ProjectAdmin,
116
+ Permission.ProjectOwner,
117
+ Permission.ProjectMember,
118
+ Permission.CreateWorkspaceNotificationSummary,
119
+ ],
120
+ read: [
121
+ Permission.ProjectAdmin,
122
+ Permission.ProjectOwner,
123
+ Permission.ProjectMember,
124
+ Permission.ReadWorkspaceNotificationSummary,
125
+ Permission.ReadAllProjectResources,
126
+ ],
127
+ update: [],
128
+ })
129
+ @Index()
130
+ @TableColumn({
131
+ type: TableColumnType.ObjectID,
132
+ required: true,
133
+ canReadOnRelationQuery: true,
134
+ title: "Project ID",
135
+ description: "ID of your OneUptime Project in which this object belongs",
136
+ })
137
+ @Column({
138
+ type: ColumnType.ObjectID,
139
+ nullable: false,
140
+ transformer: ObjectID.getDatabaseTransformer(),
141
+ })
142
+ public projectId?: ObjectID = undefined;
143
+
144
+ @ColumnAccessControl({
145
+ create: [
146
+ Permission.ProjectAdmin,
147
+ Permission.ProjectOwner,
148
+ Permission.ProjectMember,
149
+ Permission.CreateWorkspaceNotificationSummary,
150
+ ],
151
+ read: [
152
+ Permission.ProjectAdmin,
153
+ Permission.ProjectOwner,
154
+ Permission.ProjectMember,
155
+ Permission.ReadWorkspaceNotificationSummary,
156
+ Permission.ReadAllProjectResources,
157
+ ],
158
+ update: [
159
+ Permission.ProjectAdmin,
160
+ Permission.ProjectOwner,
161
+ Permission.ProjectMember,
162
+ Permission.EditWorkspaceNotificationSummary,
163
+ ],
164
+ })
165
+ @TableColumn({
166
+ title: "Summary Name",
167
+ description: "Name of the Summary Rule",
168
+ required: true,
169
+ unique: false,
170
+ type: TableColumnType.LongText,
171
+ canReadOnRelationQuery: true,
172
+ })
173
+ @Column({
174
+ type: ColumnType.LongText,
175
+ length: ColumnLength.LongText,
176
+ unique: false,
177
+ nullable: false,
178
+ })
179
+ public name?: string = undefined;
180
+
181
+ @ColumnAccessControl({
182
+ create: [
183
+ Permission.ProjectAdmin,
184
+ Permission.ProjectOwner,
185
+ Permission.ProjectMember,
186
+ Permission.CreateWorkspaceNotificationSummary,
187
+ ],
188
+ read: [
189
+ Permission.ProjectAdmin,
190
+ Permission.ProjectOwner,
191
+ Permission.ProjectMember,
192
+ Permission.ReadWorkspaceNotificationSummary,
193
+ Permission.ReadAllProjectResources,
194
+ ],
195
+ update: [
196
+ Permission.ProjectAdmin,
197
+ Permission.ProjectOwner,
198
+ Permission.ProjectMember,
199
+ Permission.EditWorkspaceNotificationSummary,
200
+ ],
201
+ })
202
+ @TableColumn({
203
+ title: "Summary Description",
204
+ description: "Description of the Summary Rule",
205
+ required: false,
206
+ unique: false,
207
+ type: TableColumnType.LongText,
208
+ canReadOnRelationQuery: true,
209
+ })
210
+ @Column({
211
+ type: ColumnType.LongText,
212
+ length: ColumnLength.LongText,
213
+ unique: false,
214
+ nullable: true,
215
+ })
216
+ public description?: string = undefined;
217
+
218
+ @ColumnAccessControl({
219
+ create: [
220
+ Permission.ProjectAdmin,
221
+ Permission.ProjectOwner,
222
+ Permission.ProjectMember,
223
+ Permission.CreateWorkspaceNotificationSummary,
224
+ ],
225
+ read: [
226
+ Permission.ProjectAdmin,
227
+ Permission.ProjectOwner,
228
+ Permission.ProjectMember,
229
+ Permission.ReadWorkspaceNotificationSummary,
230
+ Permission.ReadAllProjectResources,
231
+ ],
232
+ update: [
233
+ Permission.ProjectAdmin,
234
+ Permission.ProjectOwner,
235
+ Permission.ProjectMember,
236
+ Permission.EditWorkspaceNotificationSummary,
237
+ ],
238
+ })
239
+ @TableColumn({
240
+ title: "Workspace Type",
241
+ description: "Type of Workspace - Slack, Microsoft Teams, etc.",
242
+ required: true,
243
+ unique: false,
244
+ type: TableColumnType.LongText,
245
+ canReadOnRelationQuery: true,
246
+ })
247
+ @Column({
248
+ type: ColumnType.LongText,
249
+ length: ColumnLength.LongText,
250
+ unique: false,
251
+ nullable: false,
252
+ })
253
+ public workspaceType?: WorkspaceType = undefined;
254
+
255
+ @ColumnAccessControl({
256
+ create: [
257
+ Permission.ProjectAdmin,
258
+ Permission.ProjectOwner,
259
+ Permission.ProjectMember,
260
+ Permission.CreateWorkspaceNotificationSummary,
261
+ ],
262
+ read: [
263
+ Permission.ProjectAdmin,
264
+ Permission.ProjectOwner,
265
+ Permission.ProjectMember,
266
+ Permission.ReadWorkspaceNotificationSummary,
267
+ Permission.ReadAllProjectResources,
268
+ ],
269
+ update: [
270
+ Permission.ProjectAdmin,
271
+ Permission.ProjectOwner,
272
+ Permission.ProjectMember,
273
+ Permission.EditWorkspaceNotificationSummary,
274
+ ],
275
+ })
276
+ @TableColumn({
277
+ title: "Summary Type",
278
+ description:
279
+ "Type of summary - Incident, Alert, Incident Episode, or Alert Episode",
280
+ required: true,
281
+ unique: false,
282
+ type: TableColumnType.ShortText,
283
+ canReadOnRelationQuery: true,
284
+ })
285
+ @Column({
286
+ type: ColumnType.ShortText,
287
+ unique: false,
288
+ nullable: false,
289
+ })
290
+ public summaryType?: WorkspaceNotificationSummaryType = undefined;
291
+
292
+ @ColumnAccessControl({
293
+ create: [
294
+ Permission.ProjectAdmin,
295
+ Permission.ProjectOwner,
296
+ Permission.ProjectMember,
297
+ Permission.CreateWorkspaceNotificationSummary,
298
+ ],
299
+ read: [
300
+ Permission.ProjectAdmin,
301
+ Permission.ProjectOwner,
302
+ Permission.ProjectMember,
303
+ Permission.ReadWorkspaceNotificationSummary,
304
+ Permission.ReadAllProjectResources,
305
+ ],
306
+ update: [
307
+ Permission.ProjectAdmin,
308
+ Permission.ProjectOwner,
309
+ Permission.ProjectMember,
310
+ Permission.EditWorkspaceNotificationSummary,
311
+ ],
312
+ })
313
+ @TableColumn({
314
+ type: TableColumnType.JSON,
315
+ title: "Recurring Interval",
316
+ description: "How often should the summary be sent?",
317
+ required: true,
318
+ })
319
+ @Column({
320
+ type: ColumnType.JSON,
321
+ nullable: false,
322
+ transformer: Recurring.getDatabaseTransformer(),
323
+ })
324
+ public recurringInterval?: Recurring = undefined;
325
+
326
+ @ColumnAccessControl({
327
+ create: [
328
+ Permission.ProjectAdmin,
329
+ Permission.ProjectOwner,
330
+ Permission.ProjectMember,
331
+ Permission.CreateWorkspaceNotificationSummary,
332
+ ],
333
+ read: [
334
+ Permission.ProjectAdmin,
335
+ Permission.ProjectOwner,
336
+ Permission.ProjectMember,
337
+ Permission.ReadWorkspaceNotificationSummary,
338
+ Permission.ReadAllProjectResources,
339
+ ],
340
+ update: [
341
+ Permission.ProjectAdmin,
342
+ Permission.ProjectOwner,
343
+ Permission.ProjectMember,
344
+ Permission.EditWorkspaceNotificationSummary,
345
+ ],
346
+ })
347
+ @TableColumn({
348
+ type: TableColumnType.Number,
349
+ title: "Number of Days of Data",
350
+ description: "How many days of data to include in the summary",
351
+ required: true,
352
+ })
353
+ @Column({
354
+ type: ColumnType.Number,
355
+ nullable: false,
356
+ default: 7,
357
+ })
358
+ public numberOfDaysOfData?: number = undefined;
359
+
360
+ @ColumnAccessControl({
361
+ create: [
362
+ Permission.ProjectAdmin,
363
+ Permission.ProjectOwner,
364
+ Permission.ProjectMember,
365
+ Permission.CreateWorkspaceNotificationSummary,
366
+ ],
367
+ read: [
368
+ Permission.ProjectAdmin,
369
+ Permission.ProjectOwner,
370
+ Permission.ProjectMember,
371
+ Permission.ReadWorkspaceNotificationSummary,
372
+ Permission.ReadAllProjectResources,
373
+ ],
374
+ update: [
375
+ Permission.ProjectAdmin,
376
+ Permission.ProjectOwner,
377
+ Permission.ProjectMember,
378
+ Permission.EditWorkspaceNotificationSummary,
379
+ ],
380
+ })
381
+ @TableColumn({
382
+ title: "Send First Report At",
383
+ description:
384
+ "When should the first summary report be sent? Subsequent reports will follow the recurring interval from this date.",
385
+ required: false,
386
+ unique: false,
387
+ type: TableColumnType.Date,
388
+ })
389
+ @Column({
390
+ type: ColumnType.Date,
391
+ nullable: true,
392
+ })
393
+ public sendFirstReportAt?: Date = undefined;
394
+
395
+ @ColumnAccessControl({
396
+ create: [
397
+ Permission.ProjectAdmin,
398
+ Permission.ProjectOwner,
399
+ Permission.ProjectMember,
400
+ Permission.CreateWorkspaceNotificationSummary,
401
+ ],
402
+ read: [
403
+ Permission.ProjectAdmin,
404
+ Permission.ProjectOwner,
405
+ Permission.ProjectMember,
406
+ Permission.ReadWorkspaceNotificationSummary,
407
+ Permission.ReadAllProjectResources,
408
+ ],
409
+ update: [
410
+ Permission.ProjectAdmin,
411
+ Permission.ProjectOwner,
412
+ Permission.ProjectMember,
413
+ Permission.EditWorkspaceNotificationSummary,
414
+ ],
415
+ })
416
+ @TableColumn({
417
+ type: TableColumnType.JSON,
418
+ title: "Channel Names",
419
+ description: "List of channel names to post the summary to",
420
+ required: true,
421
+ })
422
+ @Column({
423
+ type: ColumnType.JSON,
424
+ nullable: false,
425
+ })
426
+ public channelNames?: Array<string> = undefined;
427
+
428
+ @ColumnAccessControl({
429
+ create: [
430
+ Permission.ProjectAdmin,
431
+ Permission.ProjectOwner,
432
+ Permission.ProjectMember,
433
+ Permission.CreateWorkspaceNotificationSummary,
434
+ ],
435
+ read: [
436
+ Permission.ProjectAdmin,
437
+ Permission.ProjectOwner,
438
+ Permission.ProjectMember,
439
+ Permission.ReadWorkspaceNotificationSummary,
440
+ Permission.ReadAllProjectResources,
441
+ ],
442
+ update: [
443
+ Permission.ProjectAdmin,
444
+ Permission.ProjectOwner,
445
+ Permission.ProjectMember,
446
+ Permission.EditWorkspaceNotificationSummary,
447
+ ],
448
+ })
449
+ @TableColumn({
450
+ title: "Team Name",
451
+ description: "Microsoft Teams team name (only for Microsoft Teams)",
452
+ required: false,
453
+ unique: false,
454
+ type: TableColumnType.LongText,
455
+ })
456
+ @Column({
457
+ type: ColumnType.LongText,
458
+ length: ColumnLength.LongText,
459
+ unique: false,
460
+ nullable: true,
461
+ })
462
+ public teamName?: string = undefined;
463
+
464
+ @ColumnAccessControl({
465
+ create: [
466
+ Permission.ProjectAdmin,
467
+ Permission.ProjectOwner,
468
+ Permission.ProjectMember,
469
+ Permission.CreateWorkspaceNotificationSummary,
470
+ ],
471
+ read: [
472
+ Permission.ProjectAdmin,
473
+ Permission.ProjectOwner,
474
+ Permission.ProjectMember,
475
+ Permission.ReadWorkspaceNotificationSummary,
476
+ Permission.ReadAllProjectResources,
477
+ ],
478
+ update: [
479
+ Permission.ProjectAdmin,
480
+ Permission.ProjectOwner,
481
+ Permission.ProjectMember,
482
+ Permission.EditWorkspaceNotificationSummary,
483
+ ],
484
+ })
485
+ @TableColumn({
486
+ type: TableColumnType.JSON,
487
+ title: "Summary Items",
488
+ description: "Checklist of items to include in the summary",
489
+ required: true,
490
+ })
491
+ @Column({
492
+ type: ColumnType.JSON,
493
+ nullable: false,
494
+ })
495
+ public summaryItems?: Array<WorkspaceNotificationSummaryItem> = undefined;
496
+
497
+ @ColumnAccessControl({
498
+ create: [
499
+ Permission.ProjectAdmin,
500
+ Permission.ProjectOwner,
501
+ Permission.ProjectMember,
502
+ Permission.CreateWorkspaceNotificationSummary,
503
+ ],
504
+ read: [
505
+ Permission.ProjectAdmin,
506
+ Permission.ProjectOwner,
507
+ Permission.ProjectMember,
508
+ Permission.ReadWorkspaceNotificationSummary,
509
+ Permission.ReadAllProjectResources,
510
+ ],
511
+ update: [
512
+ Permission.ProjectAdmin,
513
+ Permission.ProjectOwner,
514
+ Permission.ProjectMember,
515
+ Permission.EditWorkspaceNotificationSummary,
516
+ ],
517
+ })
518
+ @TableColumn({
519
+ type: TableColumnType.JSON,
520
+ title: "Filters",
521
+ description: "Filter conditions for which items to include in the summary",
522
+ required: false,
523
+ })
524
+ @Column({
525
+ type: ColumnType.JSON,
526
+ nullable: true,
527
+ })
528
+ public filters?: Array<NotificationRuleCondition> = undefined;
529
+
530
+ @ColumnAccessControl({
531
+ create: [
532
+ Permission.ProjectAdmin,
533
+ Permission.ProjectOwner,
534
+ Permission.ProjectMember,
535
+ Permission.CreateWorkspaceNotificationSummary,
536
+ ],
537
+ read: [
538
+ Permission.ProjectAdmin,
539
+ Permission.ProjectOwner,
540
+ Permission.ProjectMember,
541
+ Permission.ReadWorkspaceNotificationSummary,
542
+ Permission.ReadAllProjectResources,
543
+ ],
544
+ update: [
545
+ Permission.ProjectAdmin,
546
+ Permission.ProjectOwner,
547
+ Permission.ProjectMember,
548
+ Permission.EditWorkspaceNotificationSummary,
549
+ ],
550
+ })
551
+ @TableColumn({
552
+ title: "Filter Condition",
553
+ description: "How to combine filters - Any or All",
554
+ required: false,
555
+ unique: false,
556
+ type: TableColumnType.ShortText,
557
+ })
558
+ @Column({
559
+ type: ColumnType.ShortText,
560
+ unique: false,
561
+ nullable: true,
562
+ })
563
+ public filterCondition?: FilterCondition = undefined;
564
+
565
+ @ColumnAccessControl({
566
+ create: [
567
+ Permission.ProjectAdmin,
568
+ Permission.ProjectOwner,
569
+ Permission.ProjectMember,
570
+ Permission.CreateWorkspaceNotificationSummary,
571
+ ],
572
+ read: [
573
+ Permission.ProjectAdmin,
574
+ Permission.ProjectOwner,
575
+ Permission.ProjectMember,
576
+ Permission.ReadWorkspaceNotificationSummary,
577
+ Permission.ReadAllProjectResources,
578
+ ],
579
+ update: [
580
+ Permission.ProjectAdmin,
581
+ Permission.ProjectOwner,
582
+ Permission.ProjectMember,
583
+ Permission.EditWorkspaceNotificationSummary,
584
+ ],
585
+ })
586
+ @TableColumn({
587
+ type: TableColumnType.Date,
588
+ title: "Next Send At",
589
+ description: "When the next summary should be sent",
590
+ })
591
+ @Column({
592
+ type: ColumnType.Date,
593
+ nullable: true,
594
+ })
595
+ public nextSendAt?: Date = undefined;
596
+
597
+ @ColumnAccessControl({
598
+ create: [
599
+ Permission.ProjectAdmin,
600
+ Permission.ProjectOwner,
601
+ Permission.ProjectMember,
602
+ Permission.CreateWorkspaceNotificationSummary,
603
+ ],
604
+ read: [
605
+ Permission.ProjectAdmin,
606
+ Permission.ProjectOwner,
607
+ Permission.ProjectMember,
608
+ Permission.ReadWorkspaceNotificationSummary,
609
+ Permission.ReadAllProjectResources,
610
+ ],
611
+ update: [
612
+ Permission.ProjectAdmin,
613
+ Permission.ProjectOwner,
614
+ Permission.ProjectMember,
615
+ Permission.EditWorkspaceNotificationSummary,
616
+ ],
617
+ })
618
+ @TableColumn({
619
+ type: TableColumnType.Date,
620
+ title: "Last Sent At",
621
+ description: "When the last summary was sent",
622
+ })
623
+ @Column({
624
+ type: ColumnType.Date,
625
+ nullable: true,
626
+ })
627
+ public lastSentAt?: Date = undefined;
628
+
629
+ @ColumnAccessControl({
630
+ create: [
631
+ Permission.ProjectAdmin,
632
+ Permission.ProjectOwner,
633
+ Permission.ProjectMember,
634
+ Permission.CreateWorkspaceNotificationSummary,
635
+ ],
636
+ read: [
637
+ Permission.ProjectAdmin,
638
+ Permission.ProjectOwner,
639
+ Permission.ProjectMember,
640
+ Permission.ReadWorkspaceNotificationSummary,
641
+ Permission.ReadAllProjectResources,
642
+ ],
643
+ update: [
644
+ Permission.ProjectAdmin,
645
+ Permission.ProjectOwner,
646
+ Permission.ProjectMember,
647
+ Permission.EditWorkspaceNotificationSummary,
648
+ ],
649
+ })
650
+ @TableColumn({
651
+ type: TableColumnType.Boolean,
652
+ title: "Enabled",
653
+ description: "Is this summary rule enabled?",
654
+ required: true,
655
+ })
656
+ @Column({
657
+ type: ColumnType.Boolean,
658
+ nullable: false,
659
+ default: true,
660
+ })
661
+ public isEnabled?: boolean = undefined;
662
+
663
+ @ColumnAccessControl({
664
+ create: [
665
+ Permission.ProjectAdmin,
666
+ Permission.ProjectOwner,
667
+ Permission.ProjectMember,
668
+ Permission.CreateWorkspaceNotificationSummary,
669
+ ],
670
+ read: [
671
+ Permission.ProjectAdmin,
672
+ Permission.ProjectOwner,
673
+ Permission.ProjectMember,
674
+ Permission.ReadWorkspaceNotificationSummary,
675
+ Permission.ReadAllProjectResources,
676
+ ],
677
+ update: [
678
+ Permission.ProjectAdmin,
679
+ Permission.ProjectOwner,
680
+ Permission.ProjectMember,
681
+ Permission.EditWorkspaceNotificationSummary,
682
+ ],
683
+ })
684
+ @TableColumn({
685
+ manyToOneRelationColumn: "createdByUserId",
686
+ type: TableColumnType.Entity,
687
+ modelType: User,
688
+ title: "Created by User",
689
+ description:
690
+ "Relation to User who created this object (if this object was created by a User)",
691
+ })
692
+ @ManyToOne(
693
+ () => {
694
+ return User;
695
+ },
696
+ {
697
+ eager: false,
698
+ nullable: true,
699
+ onDelete: "SET NULL",
700
+ orphanedRowAction: "nullify",
701
+ },
702
+ )
703
+ @JoinColumn({ name: "createdByUserId" })
704
+ public createdByUser?: User = undefined;
705
+
706
+ @ColumnAccessControl({
707
+ create: [
708
+ Permission.ProjectAdmin,
709
+ Permission.ProjectOwner,
710
+ Permission.ProjectMember,
711
+ Permission.CreateWorkspaceNotificationSummary,
712
+ ],
713
+ read: [
714
+ Permission.ProjectAdmin,
715
+ Permission.ProjectOwner,
716
+ Permission.ProjectMember,
717
+ Permission.ReadWorkspaceNotificationSummary,
718
+ Permission.ReadAllProjectResources,
719
+ ],
720
+ update: [
721
+ Permission.ProjectAdmin,
722
+ Permission.ProjectOwner,
723
+ Permission.ProjectMember,
724
+ Permission.EditWorkspaceNotificationSummary,
725
+ ],
726
+ })
727
+ @TableColumn({
728
+ type: TableColumnType.ObjectID,
729
+ title: "Created by User ID",
730
+ description:
731
+ "User ID who created this object (if this object was created by a User)",
732
+ })
733
+ @Column({
734
+ type: ColumnType.ObjectID,
735
+ nullable: true,
736
+ transformer: ObjectID.getDatabaseTransformer(),
737
+ })
738
+ public createdByUserId?: ObjectID = undefined;
739
+
740
+ @ColumnAccessControl({
741
+ create: [
742
+ Permission.ProjectAdmin,
743
+ Permission.ProjectOwner,
744
+ Permission.ProjectMember,
745
+ Permission.CreateWorkspaceNotificationSummary,
746
+ ],
747
+ read: [
748
+ Permission.ProjectAdmin,
749
+ Permission.ProjectOwner,
750
+ Permission.ProjectMember,
751
+ Permission.ReadWorkspaceNotificationSummary,
752
+ Permission.ReadAllProjectResources,
753
+ ],
754
+ update: [
755
+ Permission.ProjectAdmin,
756
+ Permission.ProjectOwner,
757
+ Permission.ProjectMember,
758
+ Permission.EditWorkspaceNotificationSummary,
759
+ ],
760
+ })
761
+ @TableColumn({
762
+ manyToOneRelationColumn: "deletedByUserId",
763
+ type: TableColumnType.Entity,
764
+ title: "Deleted by User",
765
+ modelType: User,
766
+ description:
767
+ "Relation to User who deleted this object (if this object was deleted by a User)",
768
+ })
769
+ @ManyToOne(
770
+ () => {
771
+ return User;
772
+ },
773
+ {
774
+ cascade: false,
775
+ eager: false,
776
+ nullable: true,
777
+ onDelete: "SET NULL",
778
+ orphanedRowAction: "nullify",
779
+ },
780
+ )
781
+ @JoinColumn({ name: "deletedByUserId" })
782
+ public deletedByUser?: User = undefined;
783
+
784
+ @ColumnAccessControl({
785
+ create: [
786
+ Permission.ProjectAdmin,
787
+ Permission.ProjectOwner,
788
+ Permission.ProjectMember,
789
+ Permission.CreateWorkspaceNotificationSummary,
790
+ ],
791
+ read: [
792
+ Permission.ProjectAdmin,
793
+ Permission.ProjectOwner,
794
+ Permission.ProjectMember,
795
+ Permission.ReadWorkspaceNotificationSummary,
796
+ Permission.ReadAllProjectResources,
797
+ ],
798
+ update: [
799
+ Permission.ProjectAdmin,
800
+ Permission.ProjectOwner,
801
+ Permission.ProjectMember,
802
+ Permission.EditWorkspaceNotificationSummary,
803
+ ],
804
+ })
805
+ @TableColumn({
806
+ type: TableColumnType.ObjectID,
807
+ title: "Deleted by User ID",
808
+ description:
809
+ "User ID who deleted this object (if this object was deleted by a User)",
810
+ })
811
+ @Column({
812
+ type: ColumnType.ObjectID,
813
+ nullable: true,
814
+ transformer: ObjectID.getDatabaseTransformer(),
815
+ })
816
+ public deletedByUserId?: ObjectID = undefined;
817
+ }
818
+
819
+ export default WorkspaceNotificationSummary;