@oneuptime/common 9.3.20 → 9.4.0

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 (139) hide show
  1. package/Models/DatabaseModels/IncomingCallLog.ts +521 -0
  2. package/Models/DatabaseModels/IncomingCallLogItem.ts +463 -0
  3. package/Models/DatabaseModels/IncomingCallPolicy.ts +811 -0
  4. package/Models/DatabaseModels/IncomingCallPolicyEscalationRule.ts +597 -0
  5. package/Models/DatabaseModels/Index.ts +18 -0
  6. package/Models/DatabaseModels/ProjectSCIMLog.ts +422 -0
  7. package/Models/DatabaseModels/StatusPageSCIMLog.ts +455 -0
  8. package/Models/DatabaseModels/User.ts +0 -15
  9. package/Models/DatabaseModels/UserIncomingCallNumber.ts +296 -0
  10. package/Server/API/UserIncomingCallNumberAPI.ts +128 -0
  11. package/Server/Infrastructure/Postgres/SchemaMigrations/1768583966447-MigrationName.ts +121 -0
  12. package/Server/Infrastructure/Postgres/SchemaMigrations/1768647802022-RemoveAlertPhoneNumberFromUser.ts +22 -0
  13. package/Server/Infrastructure/Postgres/SchemaMigrations/1768649699509-MigrationName.ts +787 -0
  14. package/Server/Infrastructure/Postgres/SchemaMigrations/1768682071562-MigrationName.ts +29 -0
  15. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +8 -0
  16. package/Server/Services/IncomingCallLogItemService.ts +10 -0
  17. package/Server/Services/IncomingCallLogService.ts +10 -0
  18. package/Server/Services/IncomingCallPolicyEscalationRuleService.ts +267 -0
  19. package/Server/Services/IncomingCallPolicyService.ts +10 -0
  20. package/Server/Services/Index.ts +7 -0
  21. package/Server/Services/ProjectSCIMLogService.ts +11 -0
  22. package/Server/Services/StatusPageSCIMLogService.ts +11 -0
  23. package/Server/Services/UserCallService.ts +31 -0
  24. package/Server/Services/UserIncomingCallNumberService.ts +258 -0
  25. package/Server/Services/UserSmsService.ts +31 -0
  26. package/Server/Utils/AnalyticsDatabase/Statement.ts +2 -2
  27. package/Server/Utils/StartServer.ts +5 -0
  28. package/Tests/UI/Components/Input.test.tsx +33 -0
  29. package/Types/Call/CallProvider.ts +99 -0
  30. package/Types/Call/CallProviderType.ts +6 -0
  31. package/Types/Date.ts +18 -0
  32. package/Types/Icon/IconProp.ts +1 -0
  33. package/Types/IncomingCall/IncomingCallStatus.ts +13 -0
  34. package/Types/Permission.ts +126 -0
  35. package/Types/Phone.ts +53 -4
  36. package/Types/SCIM/SCIMLogStatus.ts +7 -0
  37. package/UI/Components/Date/StartAndEndDate.tsx +35 -11
  38. package/UI/Components/Diagram/ConceptCards.tsx +74 -0
  39. package/UI/Components/Diagram/HorizontalStepChain.tsx +92 -0
  40. package/UI/Components/Diagram/Index.ts +11 -0
  41. package/UI/Components/Diagram/NumberedSteps.tsx +77 -0
  42. package/UI/Components/Diagram/VerticalFlowSteps.tsx +59 -0
  43. package/UI/Components/Filters/FilterViewer.tsx +7 -0
  44. package/UI/Components/Icon/Icon.tsx +10 -0
  45. package/UI/Components/Input/Input.tsx +7 -0
  46. package/UI/Components/SimpleLogViewer/SimpleLogViewer.tsx +86 -2
  47. package/build/dist/Models/DatabaseModels/IncomingCallLog.js +565 -0
  48. package/build/dist/Models/DatabaseModels/IncomingCallLog.js.map +1 -0
  49. package/build/dist/Models/DatabaseModels/IncomingCallLogItem.js +497 -0
  50. package/build/dist/Models/DatabaseModels/IncomingCallLogItem.js.map +1 -0
  51. package/build/dist/Models/DatabaseModels/IncomingCallPolicy.js +840 -0
  52. package/build/dist/Models/DatabaseModels/IncomingCallPolicy.js.map +1 -0
  53. package/build/dist/Models/DatabaseModels/IncomingCallPolicyEscalationRule.js +619 -0
  54. package/build/dist/Models/DatabaseModels/IncomingCallPolicyEscalationRule.js.map +1 -0
  55. package/build/dist/Models/DatabaseModels/Index.js +16 -0
  56. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  57. package/build/dist/Models/DatabaseModels/ProjectSCIMLog.js +455 -0
  58. package/build/dist/Models/DatabaseModels/ProjectSCIMLog.js.map +1 -0
  59. package/build/dist/Models/DatabaseModels/StatusPageSCIMLog.js +486 -0
  60. package/build/dist/Models/DatabaseModels/StatusPageSCIMLog.js.map +1 -0
  61. package/build/dist/Models/DatabaseModels/User.js +0 -16
  62. package/build/dist/Models/DatabaseModels/User.js.map +1 -1
  63. package/build/dist/Models/DatabaseModels/UserIncomingCallNumber.js +315 -0
  64. package/build/dist/Models/DatabaseModels/UserIncomingCallNumber.js.map +1 -0
  65. package/build/dist/Server/API/UserIncomingCallNumberAPI.js +72 -0
  66. package/build/dist/Server/API/UserIncomingCallNumberAPI.js.map +1 -0
  67. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1768583966447-MigrationName.js +48 -0
  68. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1768583966447-MigrationName.js.map +1 -0
  69. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1768647802022-RemoveAlertPhoneNumberFromUser.js +34 -0
  70. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1768647802022-RemoveAlertPhoneNumberFromUser.js.map +1 -0
  71. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1768649699509-MigrationName.js +270 -0
  72. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1768649699509-MigrationName.js.map +1 -0
  73. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1768682071562-MigrationName.js +16 -0
  74. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1768682071562-MigrationName.js.map +1 -0
  75. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +8 -0
  76. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  77. package/build/dist/Server/Services/IncomingCallLogItemService.js +9 -0
  78. package/build/dist/Server/Services/IncomingCallLogItemService.js.map +1 -0
  79. package/build/dist/Server/Services/IncomingCallLogService.js +9 -0
  80. package/build/dist/Server/Services/IncomingCallLogService.js.map +1 -0
  81. package/build/dist/Server/Services/IncomingCallPolicyEscalationRuleService.js +197 -0
  82. package/build/dist/Server/Services/IncomingCallPolicyEscalationRuleService.js.map +1 -0
  83. package/build/dist/Server/Services/IncomingCallPolicyService.js +9 -0
  84. package/build/dist/Server/Services/IncomingCallPolicyService.js.map +1 -0
  85. package/build/dist/Server/Services/Index.js +6 -0
  86. package/build/dist/Server/Services/Index.js.map +1 -1
  87. package/build/dist/Server/Services/ProjectSCIMLogService.js +10 -0
  88. package/build/dist/Server/Services/ProjectSCIMLogService.js.map +1 -0
  89. package/build/dist/Server/Services/StatusPageSCIMLogService.js +10 -0
  90. package/build/dist/Server/Services/StatusPageSCIMLogService.js.map +1 -0
  91. package/build/dist/Server/Services/UserCallService.js +21 -0
  92. package/build/dist/Server/Services/UserCallService.js.map +1 -1
  93. package/build/dist/Server/Services/UserIncomingCallNumberService.js +225 -0
  94. package/build/dist/Server/Services/UserIncomingCallNumberService.js.map +1 -0
  95. package/build/dist/Server/Services/UserSmsService.js +21 -0
  96. package/build/dist/Server/Services/UserSmsService.js.map +1 -1
  97. package/build/dist/Server/Utils/AnalyticsDatabase/Statement.js +2 -2
  98. package/build/dist/Server/Utils/AnalyticsDatabase/Statement.js.map +1 -1
  99. package/build/dist/Server/Utils/StartServer.js +5 -0
  100. package/build/dist/Server/Utils/StartServer.js.map +1 -1
  101. package/build/dist/Tests/UI/Components/Input.test.js +10 -0
  102. package/build/dist/Tests/UI/Components/Input.test.js.map +1 -1
  103. package/build/dist/Types/Call/CallProvider.js +2 -0
  104. package/build/dist/Types/Call/CallProvider.js.map +1 -0
  105. package/build/dist/Types/Call/CallProviderType.js +7 -0
  106. package/build/dist/Types/Call/CallProviderType.js.map +1 -0
  107. package/build/dist/Types/Date.js +17 -3
  108. package/build/dist/Types/Date.js.map +1 -1
  109. package/build/dist/Types/Icon/IconProp.js +1 -0
  110. package/build/dist/Types/Icon/IconProp.js.map +1 -1
  111. package/build/dist/Types/IncomingCall/IncomingCallStatus.js +14 -0
  112. package/build/dist/Types/IncomingCall/IncomingCallStatus.js.map +1 -0
  113. package/build/dist/Types/Permission.js +104 -0
  114. package/build/dist/Types/Permission.js.map +1 -1
  115. package/build/dist/Types/Phone.js +47 -3
  116. package/build/dist/Types/Phone.js.map +1 -1
  117. package/build/dist/Types/SCIM/SCIMLogStatus.js +8 -0
  118. package/build/dist/Types/SCIM/SCIMLogStatus.js.map +1 -0
  119. package/build/dist/UI/Components/Date/StartAndEndDate.js +13 -13
  120. package/build/dist/UI/Components/Date/StartAndEndDate.js.map +1 -1
  121. package/build/dist/UI/Components/Diagram/ConceptCards.js +30 -0
  122. package/build/dist/UI/Components/Diagram/ConceptCards.js.map +1 -0
  123. package/build/dist/UI/Components/Diagram/HorizontalStepChain.js +30 -0
  124. package/build/dist/UI/Components/Diagram/HorizontalStepChain.js.map +1 -0
  125. package/build/dist/UI/Components/Diagram/Index.js +5 -0
  126. package/build/dist/UI/Components/Diagram/Index.js.map +1 -0
  127. package/build/dist/UI/Components/Diagram/NumberedSteps.js +18 -0
  128. package/build/dist/UI/Components/Diagram/NumberedSteps.js.map +1 -0
  129. package/build/dist/UI/Components/Diagram/VerticalFlowSteps.js +16 -0
  130. package/build/dist/UI/Components/Diagram/VerticalFlowSteps.js.map +1 -0
  131. package/build/dist/UI/Components/Filters/FilterViewer.js +6 -5
  132. package/build/dist/UI/Components/Filters/FilterViewer.js.map +1 -1
  133. package/build/dist/UI/Components/Icon/Icon.js +4 -0
  134. package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
  135. package/build/dist/UI/Components/Input/Input.js +4 -1
  136. package/build/dist/UI/Components/Input/Input.js.map +1 -1
  137. package/build/dist/UI/Components/SimpleLogViewer/SimpleLogViewer.js +30 -1
  138. package/build/dist/UI/Components/SimpleLogViewer/SimpleLogViewer.js.map +1 -1
  139. package/package.json +1 -1
@@ -0,0 +1,422 @@
1
+ import Project from "./Project";
2
+ import ProjectSCIM from "./ProjectSCIM";
3
+ import User from "./User";
4
+ import BaseModel from "./DatabaseBaseModel/DatabaseBaseModel";
5
+ import Route from "../../Types/API/Route";
6
+ import ColumnAccessControl from "../../Types/Database/AccessControl/ColumnAccessControl";
7
+ import TableAccessControl from "../../Types/Database/AccessControl/TableAccessControl";
8
+ import ColumnLength from "../../Types/Database/ColumnLength";
9
+ import ColumnType from "../../Types/Database/ColumnType";
10
+ import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
11
+ import EnableDocumentation from "../../Types/Database/EnableDocumentation";
12
+ import TableColumn from "../../Types/Database/TableColumn";
13
+ import TableColumnType from "../../Types/Database/TableColumnType";
14
+ import TableMetadata from "../../Types/Database/TableMetadata";
15
+ import TenantColumn from "../../Types/Database/TenantColumn";
16
+ import IconProp from "../../Types/Icon/IconProp";
17
+ import ObjectID from "../../Types/ObjectID";
18
+ import Permission from "../../Types/Permission";
19
+ import SCIMLogStatus from "../../Types/SCIM/SCIMLogStatus";
20
+ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
21
+
22
+ @EnableDocumentation()
23
+ @TenantColumn("projectId")
24
+ @TableAccessControl({
25
+ create: [],
26
+ read: [
27
+ Permission.ProjectOwner,
28
+ Permission.ProjectAdmin,
29
+ Permission.ProjectMember,
30
+ Permission.ReadProjectSCIMLog,
31
+ ],
32
+ delete: [],
33
+ update: [],
34
+ })
35
+ @CrudApiEndpoint(new Route("/project-scim-log"))
36
+ @Entity({
37
+ name: "ProjectSCIMLog",
38
+ })
39
+ @TableMetadata({
40
+ tableName: "ProjectSCIMLog",
41
+ singularName: "SCIM Log",
42
+ pluralName: "SCIM Logs",
43
+ icon: IconProp.Terminal,
44
+ tableDescription:
45
+ "Logs of all SCIM provisioning operations for this project.",
46
+ })
47
+ export default class ProjectSCIMLog extends BaseModel {
48
+ @ColumnAccessControl({
49
+ create: [],
50
+ read: [
51
+ Permission.ProjectOwner,
52
+ Permission.ProjectAdmin,
53
+ Permission.ProjectMember,
54
+ Permission.ReadProjectSCIMLog,
55
+ ],
56
+ update: [],
57
+ })
58
+ @TableColumn({
59
+ manyToOneRelationColumn: "projectId",
60
+ type: TableColumnType.Entity,
61
+ modelType: Project,
62
+ title: "Project",
63
+ description: "Relation to Project Resource in which this object belongs",
64
+ })
65
+ @ManyToOne(
66
+ () => {
67
+ return Project;
68
+ },
69
+ {
70
+ eager: false,
71
+ nullable: true,
72
+ onDelete: "CASCADE",
73
+ orphanedRowAction: "nullify",
74
+ },
75
+ )
76
+ @JoinColumn({ name: "projectId" })
77
+ public project?: Project = undefined;
78
+
79
+ @ColumnAccessControl({
80
+ create: [],
81
+ read: [
82
+ Permission.ProjectOwner,
83
+ Permission.ProjectAdmin,
84
+ Permission.ProjectMember,
85
+ Permission.ReadProjectSCIMLog,
86
+ ],
87
+ update: [],
88
+ })
89
+ @Index()
90
+ @TableColumn({
91
+ type: TableColumnType.ObjectID,
92
+ required: true,
93
+ canReadOnRelationQuery: true,
94
+ title: "Project ID",
95
+ description: "ID of your OneUptime Project in which this object belongs",
96
+ })
97
+ @Column({
98
+ type: ColumnType.ObjectID,
99
+ nullable: false,
100
+ transformer: ObjectID.getDatabaseTransformer(),
101
+ })
102
+ public projectId?: ObjectID = undefined;
103
+
104
+ @ColumnAccessControl({
105
+ create: [],
106
+ read: [
107
+ Permission.ProjectOwner,
108
+ Permission.ProjectAdmin,
109
+ Permission.ProjectMember,
110
+ Permission.ReadProjectSCIMLog,
111
+ ],
112
+ update: [],
113
+ })
114
+ @TableColumn({
115
+ manyToOneRelationColumn: "projectScimId",
116
+ type: TableColumnType.Entity,
117
+ modelType: ProjectSCIM,
118
+ title: "Project SCIM",
119
+ description: "Relation to ProjectSCIM Resource in which this log belongs",
120
+ })
121
+ @ManyToOne(
122
+ () => {
123
+ return ProjectSCIM;
124
+ },
125
+ {
126
+ eager: false,
127
+ nullable: true,
128
+ onDelete: "CASCADE",
129
+ orphanedRowAction: "nullify",
130
+ },
131
+ )
132
+ @JoinColumn({ name: "projectScimId" })
133
+ public projectScim?: ProjectSCIM = undefined;
134
+
135
+ @ColumnAccessControl({
136
+ create: [],
137
+ read: [
138
+ Permission.ProjectOwner,
139
+ Permission.ProjectAdmin,
140
+ Permission.ProjectMember,
141
+ Permission.ReadProjectSCIMLog,
142
+ ],
143
+ update: [],
144
+ })
145
+ @Index()
146
+ @TableColumn({
147
+ type: TableColumnType.ObjectID,
148
+ required: true,
149
+ canReadOnRelationQuery: true,
150
+ title: "Project SCIM ID",
151
+ description: "ID of your Project SCIM configuration",
152
+ })
153
+ @Column({
154
+ type: ColumnType.ObjectID,
155
+ nullable: false,
156
+ transformer: ObjectID.getDatabaseTransformer(),
157
+ })
158
+ public projectScimId?: ObjectID = undefined;
159
+
160
+ @ColumnAccessControl({
161
+ create: [],
162
+ read: [
163
+ Permission.ProjectOwner,
164
+ Permission.ProjectAdmin,
165
+ Permission.ProjectMember,
166
+ Permission.ReadProjectSCIMLog,
167
+ ],
168
+ update: [],
169
+ })
170
+ @TableColumn({
171
+ required: true,
172
+ type: TableColumnType.ShortText,
173
+ title: "Operation Type",
174
+ description:
175
+ "Type of SCIM operation (e.g., CreateUser, UpdateUser, DeleteUser, ListUsers, GetUser, CreateGroup, UpdateGroup, DeleteGroup, ListGroups, GetGroup, BulkOperation)",
176
+ canReadOnRelationQuery: true,
177
+ })
178
+ @Column({
179
+ nullable: false,
180
+ type: ColumnType.ShortText,
181
+ length: ColumnLength.ShortText,
182
+ })
183
+ public operationType?: string = undefined;
184
+
185
+ @ColumnAccessControl({
186
+ create: [],
187
+ read: [
188
+ Permission.ProjectOwner,
189
+ Permission.ProjectAdmin,
190
+ Permission.ProjectMember,
191
+ Permission.ReadProjectSCIMLog,
192
+ ],
193
+ update: [],
194
+ })
195
+ @TableColumn({
196
+ required: true,
197
+ type: TableColumnType.ShortText,
198
+ title: "Status",
199
+ description: "Status of the SCIM operation",
200
+ canReadOnRelationQuery: true,
201
+ })
202
+ @Column({
203
+ nullable: false,
204
+ type: ColumnType.ShortText,
205
+ length: ColumnLength.ShortText,
206
+ })
207
+ public status?: SCIMLogStatus = undefined;
208
+
209
+ @ColumnAccessControl({
210
+ create: [],
211
+ read: [
212
+ Permission.ProjectOwner,
213
+ Permission.ProjectAdmin,
214
+ Permission.ProjectMember,
215
+ Permission.ReadProjectSCIMLog,
216
+ ],
217
+ update: [],
218
+ })
219
+ @TableColumn({
220
+ required: false,
221
+ type: TableColumnType.LongText,
222
+ title: "Status Message",
223
+ description: "Short error or status description",
224
+ canReadOnRelationQuery: false,
225
+ })
226
+ @Column({
227
+ nullable: true,
228
+ type: ColumnType.LongText,
229
+ length: ColumnLength.LongText,
230
+ })
231
+ public statusMessage?: string = undefined;
232
+
233
+ @ColumnAccessControl({
234
+ create: [],
235
+ read: [
236
+ Permission.ProjectOwner,
237
+ Permission.ProjectAdmin,
238
+ Permission.ProjectMember,
239
+ Permission.ReadProjectSCIMLog,
240
+ ],
241
+ update: [],
242
+ })
243
+ @TableColumn({
244
+ required: false,
245
+ type: TableColumnType.VeryLongText,
246
+ title: "Log Body",
247
+ description: "Detailed JSON with request/response data",
248
+ canReadOnRelationQuery: false,
249
+ })
250
+ @Column({
251
+ nullable: true,
252
+ type: ColumnType.VeryLongText,
253
+ })
254
+ public logBody?: string = undefined;
255
+
256
+ @ColumnAccessControl({
257
+ create: [],
258
+ read: [
259
+ Permission.ProjectOwner,
260
+ Permission.ProjectAdmin,
261
+ Permission.ProjectMember,
262
+ Permission.ReadProjectSCIMLog,
263
+ ],
264
+ update: [],
265
+ })
266
+ @TableColumn({
267
+ required: false,
268
+ type: TableColumnType.ShortText,
269
+ title: "HTTP Method",
270
+ description: "HTTP method used (GET, POST, PUT, PATCH, DELETE)",
271
+ canReadOnRelationQuery: true,
272
+ })
273
+ @Column({
274
+ nullable: true,
275
+ type: ColumnType.ShortText,
276
+ length: ColumnLength.ShortText,
277
+ })
278
+ public httpMethod?: string = undefined;
279
+
280
+ @ColumnAccessControl({
281
+ create: [],
282
+ read: [
283
+ Permission.ProjectOwner,
284
+ Permission.ProjectAdmin,
285
+ Permission.ProjectMember,
286
+ Permission.ReadProjectSCIMLog,
287
+ ],
288
+ update: [],
289
+ })
290
+ @TableColumn({
291
+ required: false,
292
+ type: TableColumnType.LongText,
293
+ title: "Request Path",
294
+ description: "The SCIM endpoint path",
295
+ canReadOnRelationQuery: false,
296
+ })
297
+ @Column({
298
+ nullable: true,
299
+ type: ColumnType.LongText,
300
+ length: ColumnLength.LongText,
301
+ })
302
+ public requestPath?: string = undefined;
303
+
304
+ @ColumnAccessControl({
305
+ create: [],
306
+ read: [
307
+ Permission.ProjectOwner,
308
+ Permission.ProjectAdmin,
309
+ Permission.ProjectMember,
310
+ Permission.ReadProjectSCIMLog,
311
+ ],
312
+ update: [],
313
+ })
314
+ @TableColumn({
315
+ required: false,
316
+ type: TableColumnType.Number,
317
+ title: "HTTP Status Code",
318
+ description: "Response HTTP status code",
319
+ canReadOnRelationQuery: true,
320
+ })
321
+ @Column({
322
+ nullable: true,
323
+ type: ColumnType.Number,
324
+ })
325
+ public httpStatusCode?: number = undefined;
326
+
327
+ @ColumnAccessControl({
328
+ create: [],
329
+ read: [
330
+ Permission.ProjectOwner,
331
+ Permission.ProjectAdmin,
332
+ Permission.ProjectMember,
333
+ Permission.ReadProjectSCIMLog,
334
+ ],
335
+ update: [],
336
+ })
337
+ @Index()
338
+ @TableColumn({
339
+ required: false,
340
+ type: TableColumnType.Email,
341
+ title: "Affected User Email",
342
+ description: "Email of the user affected by this operation",
343
+ canReadOnRelationQuery: true,
344
+ })
345
+ @Column({
346
+ nullable: true,
347
+ type: ColumnType.Email,
348
+ length: ColumnLength.Email,
349
+ })
350
+ public affectedUserEmail?: string = undefined;
351
+
352
+ @ColumnAccessControl({
353
+ create: [],
354
+ read: [
355
+ Permission.ProjectOwner,
356
+ Permission.ProjectAdmin,
357
+ Permission.ProjectMember,
358
+ Permission.ReadProjectSCIMLog,
359
+ ],
360
+ update: [],
361
+ })
362
+ @Index()
363
+ @TableColumn({
364
+ required: false,
365
+ type: TableColumnType.ShortText,
366
+ title: "Affected Group Name",
367
+ description: "Name of the group/team affected by this operation",
368
+ canReadOnRelationQuery: true,
369
+ })
370
+ @Column({
371
+ nullable: true,
372
+ type: ColumnType.ShortText,
373
+ length: ColumnLength.ShortText,
374
+ })
375
+ public affectedGroupName?: string = undefined;
376
+
377
+ @ColumnAccessControl({
378
+ create: [],
379
+ read: [],
380
+ update: [],
381
+ })
382
+ @TableColumn({
383
+ manyToOneRelationColumn: "deletedByUserId",
384
+ type: TableColumnType.Entity,
385
+ title: "Deleted by User",
386
+ modelType: User,
387
+ description:
388
+ "Relation to User who deleted this object (if this object was deleted by a User)",
389
+ })
390
+ @ManyToOne(
391
+ () => {
392
+ return User;
393
+ },
394
+ {
395
+ cascade: false,
396
+ eager: false,
397
+ nullable: true,
398
+ onDelete: "SET NULL",
399
+ orphanedRowAction: "nullify",
400
+ },
401
+ )
402
+ @JoinColumn({ name: "deletedByUserId" })
403
+ public deletedByUser?: User = undefined;
404
+
405
+ @ColumnAccessControl({
406
+ create: [],
407
+ read: [],
408
+ update: [],
409
+ })
410
+ @TableColumn({
411
+ type: TableColumnType.ObjectID,
412
+ title: "Deleted by User ID",
413
+ description:
414
+ "User ID who deleted this object (if this object was deleted by a User)",
415
+ })
416
+ @Column({
417
+ type: ColumnType.ObjectID,
418
+ nullable: true,
419
+ transformer: ObjectID.getDatabaseTransformer(),
420
+ })
421
+ public deletedByUserId?: ObjectID = undefined;
422
+ }