@oneuptime/common 10.4.10 → 10.4.11

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 (95) hide show
  1. package/Models/AnalyticsModels/ExceptionInstance.ts +47 -1
  2. package/Models/AnalyticsModels/Log.ts +47 -1
  3. package/Models/AnalyticsModels/Metric.ts +1 -7
  4. package/Models/AnalyticsModels/Profile.ts +47 -1
  5. package/Models/AnalyticsModels/ProfileSample.ts +47 -1
  6. package/Models/AnalyticsModels/Span.ts +47 -1
  7. package/Models/DatabaseModels/DockerHost.ts +83 -0
  8. package/Models/DatabaseModels/Host.ts +83 -0
  9. package/Models/DatabaseModels/Index.ts +0 -2
  10. package/Models/DatabaseModels/KubernetesCluster.ts +83 -0
  11. package/Server/Infrastructure/Postgres/SchemaMigrations/1779199346010-AddTelemetryRetentionConfig.ts +1 -1
  12. package/Server/Infrastructure/Postgres/SchemaMigrations/1779277271302-DropServiceDependencyTable.ts +44 -0
  13. package/Server/Infrastructure/Postgres/SchemaMigrations/1779282769946-AddTelemetryRetentionToHostDockerKubernetes.ts +50 -0
  14. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +4 -0
  15. package/Server/Services/AlertService.ts +2 -4
  16. package/Server/Services/IncidentService.ts +2 -4
  17. package/Server/Services/Index.ts +0 -2
  18. package/Server/Services/LogAggregationService.ts +54 -6
  19. package/Server/Services/OpenTelemetryIngestService.ts +132 -0
  20. package/Server/Services/TraceAggregationService.ts +83 -8
  21. package/Server/Utils/Monitor/MonitorMetricUtil.ts +2 -4
  22. package/Server/Utils/Telemetry/Telemetry.ts +38 -0
  23. package/Tests/Server/Middleware/UserAuthorization.test.ts +5 -0
  24. package/Types/Permission.ts +0 -46
  25. package/Types/Telemetry/ServiceType.ts +19 -0
  26. package/UI/Components/Forms/Validation.ts +2 -2
  27. package/UI/Components/LogsViewer/LogsViewer.tsx +135 -17
  28. package/UI/Components/LogsViewer/components/LogsFacetSidebar.tsx +84 -1
  29. package/UI/Components/Telemetry/TelemetryRetentionConfigForm.tsx +0 -1
  30. package/build/dist/Models/AnalyticsModels/ExceptionInstance.js +41 -1
  31. package/build/dist/Models/AnalyticsModels/ExceptionInstance.js.map +1 -1
  32. package/build/dist/Models/AnalyticsModels/Log.js +41 -1
  33. package/build/dist/Models/AnalyticsModels/Log.js.map +1 -1
  34. package/build/dist/Models/AnalyticsModels/Metric.js +0 -7
  35. package/build/dist/Models/AnalyticsModels/Metric.js.map +1 -1
  36. package/build/dist/Models/AnalyticsModels/Profile.js +41 -1
  37. package/build/dist/Models/AnalyticsModels/Profile.js.map +1 -1
  38. package/build/dist/Models/AnalyticsModels/ProfileSample.js +41 -1
  39. package/build/dist/Models/AnalyticsModels/ProfileSample.js.map +1 -1
  40. package/build/dist/Models/AnalyticsModels/Span.js +41 -1
  41. package/build/dist/Models/AnalyticsModels/Span.js.map +1 -1
  42. package/build/dist/Models/DatabaseModels/DockerHost.js +84 -0
  43. package/build/dist/Models/DatabaseModels/DockerHost.js.map +1 -1
  44. package/build/dist/Models/DatabaseModels/Host.js +84 -0
  45. package/build/dist/Models/DatabaseModels/Host.js.map +1 -1
  46. package/build/dist/Models/DatabaseModels/Index.js +0 -2
  47. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  48. package/build/dist/Models/DatabaseModels/KubernetesCluster.js +84 -0
  49. package/build/dist/Models/DatabaseModels/KubernetesCluster.js.map +1 -1
  50. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779199346010-AddTelemetryRetentionConfig.js.map +1 -1
  51. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779277271302-DropServiceDependencyTable.js +42 -0
  52. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779277271302-DropServiceDependencyTable.js.map +1 -0
  53. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779282769946-AddTelemetryRetentionToHostDockerKubernetes.js +22 -0
  54. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779282769946-AddTelemetryRetentionToHostDockerKubernetes.js.map +1 -0
  55. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +4 -0
  56. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  57. package/build/dist/Server/Services/AlertService.js +2 -1
  58. package/build/dist/Server/Services/AlertService.js.map +1 -1
  59. package/build/dist/Server/Services/IncidentService.js +2 -1
  60. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  61. package/build/dist/Server/Services/Index.js +0 -2
  62. package/build/dist/Server/Services/Index.js.map +1 -1
  63. package/build/dist/Server/Services/LogAggregationService.js +46 -4
  64. package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
  65. package/build/dist/Server/Services/OpenTelemetryIngestService.js +103 -0
  66. package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
  67. package/build/dist/Server/Services/TraceAggregationService.js +66 -6
  68. package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
  69. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js +2 -1
  70. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js.map +1 -1
  71. package/build/dist/Server/Utils/Telemetry/Telemetry.js +26 -0
  72. package/build/dist/Server/Utils/Telemetry/Telemetry.js.map +1 -1
  73. package/build/dist/Tests/Server/Middleware/UserAuthorization.test.js +3 -0
  74. package/build/dist/Tests/Server/Middleware/UserAuthorization.test.js.map +1 -1
  75. package/build/dist/Types/Permission.js +0 -40
  76. package/build/dist/Types/Permission.js.map +1 -1
  77. package/build/dist/Types/Telemetry/ServiceType.js +20 -0
  78. package/build/dist/Types/Telemetry/ServiceType.js.map +1 -0
  79. package/build/dist/UI/Components/Forms/Validation.js +2 -2
  80. package/build/dist/UI/Components/Forms/Validation.js.map +1 -1
  81. package/build/dist/UI/Components/LogsViewer/LogsViewer.js +106 -16
  82. package/build/dist/UI/Components/LogsViewer/LogsViewer.js.map +1 -1
  83. package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js +67 -1
  84. package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js.map +1 -1
  85. package/build/dist/UI/Components/Telemetry/TelemetryRetentionConfigForm.js.map +1 -1
  86. package/package.json +1 -1
  87. package/Models/DatabaseModels/ServiceDependency.ts +0 -529
  88. package/Server/Services/ServiceDependencyService.ts +0 -48
  89. package/UI/Components/Graphs/ServiceDependencyGraph.tsx +0 -286
  90. package/build/dist/Models/DatabaseModels/ServiceDependency.js +0 -545
  91. package/build/dist/Models/DatabaseModels/ServiceDependency.js.map +0 -1
  92. package/build/dist/Server/Services/ServiceDependencyService.js +0 -47
  93. package/build/dist/Server/Services/ServiceDependencyService.js.map +0 -1
  94. package/build/dist/UI/Components/Graphs/ServiceDependencyGraph.js +0 -206
  95. package/build/dist/UI/Components/Graphs/ServiceDependencyGraph.js.map +0 -1
@@ -1,529 +0,0 @@
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 { PlanType } from "../../Types/Billing/SubscriptionPlan";
6
- import ColumnAccessControl from "../../Types/Database/AccessControl/ColumnAccessControl";
7
- import TableAccessControl from "../../Types/Database/AccessControl/TableAccessControl";
8
- import TableBillingAccessControl from "../../Types/Database/AccessControl/TableBillingAccessControl";
9
- import CanAccessIfCanReadOn from "../../Types/Database/CanAccessIfCanReadOn";
10
- import ColumnType from "../../Types/Database/ColumnType";
11
- import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
12
- import EnableDocumentation from "../../Types/Database/EnableDocumentation";
13
- import EnableWorkflow from "../../Types/Database/EnableWorkflow";
14
- import SlugifyColumn from "../../Types/Database/SlugifyColumn";
15
- import TableColumn from "../../Types/Database/TableColumn";
16
- import TableColumnType from "../../Types/Database/TableColumnType";
17
- import TableMetadata from "../../Types/Database/TableMetadata";
18
- import TenantColumn from "../../Types/Database/TenantColumn";
19
- import IconProp from "../../Types/Icon/IconProp";
20
- import ObjectID from "../../Types/ObjectID";
21
- import Permission from "../../Types/Permission";
22
- import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
23
- import Service from "./Service";
24
-
25
- @CanAccessIfCanReadOn("serviceId")
26
- @EnableDocumentation()
27
- @TenantColumn("projectId")
28
- @TableBillingAccessControl({
29
- create: PlanType.Growth,
30
- read: PlanType.Growth,
31
- update: PlanType.Growth,
32
- delete: PlanType.Growth,
33
- })
34
- @TableAccessControl({
35
- create: [
36
- Permission.ProjectOwner,
37
- Permission.ProjectAdmin,
38
- Permission.ProjectMember,
39
- Permission.SettingsAdmin,
40
- Permission.SettingsMember,
41
- Permission.CreateServiceDependency,
42
- ],
43
- read: [
44
- Permission.ProjectOwner,
45
- Permission.ProjectAdmin,
46
- Permission.ProjectMember,
47
- Permission.Viewer,
48
- Permission.SettingsAdmin,
49
- Permission.SettingsMember,
50
- Permission.SettingsViewer,
51
- Permission.ProjectMember,
52
- Permission.Viewer,
53
- Permission.SettingsAdmin,
54
- Permission.SettingsMember,
55
- Permission.SettingsViewer,
56
- Permission.ReadServiceDependency,
57
- ],
58
- delete: [
59
- Permission.ProjectOwner,
60
- Permission.ProjectAdmin,
61
- Permission.ProjectMember,
62
- Permission.SettingsAdmin,
63
- Permission.SettingsMember,
64
- Permission.DeleteServiceDependency,
65
- ],
66
- update: [
67
- Permission.ProjectOwner,
68
- Permission.ProjectAdmin,
69
- Permission.ProjectMember,
70
- Permission.SettingsAdmin,
71
- Permission.SettingsMember,
72
- Permission.EditServiceDependency,
73
- ],
74
- })
75
- @EnableWorkflow({
76
- create: true,
77
- delete: true,
78
- update: true,
79
- read: true,
80
- })
81
- @CrudApiEndpoint(new Route("/service-dependency"))
82
- @SlugifyColumn("name", "slug")
83
- @TableMetadata({
84
- tableName: "ServiceDependency",
85
- singularName: "Service Dependency",
86
- pluralName: "Service Dependencies",
87
- icon: IconProp.SquareStack,
88
- tableDescription:
89
- "Service is a collection of services that you have in your organization. It can be a collection of services that you are monitoring or services that you are providing to your customers. It can be anything that you want to keep track of.",
90
- })
91
- @Entity({
92
- name: "ServiceDependency",
93
- })
94
- export default class ServiceDependency extends BaseModel {
95
- @ColumnAccessControl({
96
- create: [
97
- Permission.ProjectOwner,
98
- Permission.ProjectAdmin,
99
- Permission.ProjectMember,
100
- Permission.SettingsAdmin,
101
- Permission.SettingsMember,
102
- Permission.CreateServiceDependency,
103
- ],
104
- read: [
105
- Permission.ProjectOwner,
106
- Permission.ProjectAdmin,
107
- Permission.ProjectMember,
108
- Permission.Viewer,
109
- Permission.SettingsAdmin,
110
- Permission.SettingsMember,
111
- Permission.SettingsViewer,
112
- Permission.ProjectMember,
113
- Permission.Viewer,
114
- Permission.SettingsAdmin,
115
- Permission.SettingsMember,
116
- Permission.SettingsViewer,
117
- Permission.ReadServiceDependency,
118
- ],
119
- update: [],
120
- })
121
- @TableColumn({
122
- manyToOneRelationColumn: "projectId",
123
- type: TableColumnType.Entity,
124
- modelType: Project,
125
- title: "Project",
126
- description: "Relation to Project Resource in which this object belongs",
127
- example: "5f8b9c0d-e1a2-4b3c-8d5e-6f7a8b9c0d1e",
128
- })
129
- @ManyToOne(
130
- () => {
131
- return Project;
132
- },
133
- {
134
- eager: false,
135
- nullable: true,
136
- onDelete: "CASCADE",
137
- orphanedRowAction: "nullify",
138
- },
139
- )
140
- @JoinColumn({ name: "projectId" })
141
- public project?: Project = undefined;
142
-
143
- @ColumnAccessControl({
144
- create: [
145
- Permission.ProjectOwner,
146
- Permission.ProjectAdmin,
147
- Permission.ProjectMember,
148
- Permission.SettingsAdmin,
149
- Permission.SettingsMember,
150
- Permission.CreateServiceDependency,
151
- ],
152
- read: [
153
- Permission.ProjectOwner,
154
- Permission.ProjectAdmin,
155
- Permission.ProjectMember,
156
- Permission.Viewer,
157
- Permission.SettingsAdmin,
158
- Permission.SettingsMember,
159
- Permission.SettingsViewer,
160
- Permission.ProjectMember,
161
- Permission.Viewer,
162
- Permission.SettingsAdmin,
163
- Permission.SettingsMember,
164
- Permission.SettingsViewer,
165
- Permission.ReadServiceDependency,
166
- ],
167
- update: [],
168
- })
169
- @Index()
170
- @TableColumn({
171
- type: TableColumnType.ObjectID,
172
- required: true,
173
- canReadOnRelationQuery: true,
174
- title: "Project ID",
175
- description: "ID of your OneUptime Project in which this object belongs",
176
- example: "5f8b9c0d-e1a2-4b3c-8d5e-6f7a8b9c0d1e",
177
- })
178
- @Column({
179
- type: ColumnType.ObjectID,
180
- nullable: false,
181
- transformer: ObjectID.getDatabaseTransformer(),
182
- })
183
- public projectId?: ObjectID = undefined;
184
-
185
- @ColumnAccessControl({
186
- create: [
187
- Permission.ProjectOwner,
188
- Permission.ProjectAdmin,
189
- Permission.ProjectMember,
190
- Permission.SettingsAdmin,
191
- Permission.SettingsMember,
192
- Permission.CreateServiceDependency,
193
- ],
194
- read: [
195
- Permission.ProjectOwner,
196
- Permission.ProjectAdmin,
197
- Permission.ProjectMember,
198
- Permission.Viewer,
199
- Permission.SettingsAdmin,
200
- Permission.SettingsMember,
201
- Permission.SettingsViewer,
202
- Permission.ProjectMember,
203
- Permission.Viewer,
204
- Permission.SettingsAdmin,
205
- Permission.SettingsMember,
206
- Permission.SettingsViewer,
207
- Permission.ReadServiceDependency,
208
- ],
209
- update: [],
210
- })
211
- @TableColumn({
212
- manyToOneRelationColumn: "serviceId",
213
- type: TableColumnType.Entity,
214
- modelType: Service,
215
- title: "Service",
216
- description: "Relation to Service Resource in which this object belongs",
217
- example: "f6a7b8c9-d0e1-2345-fa67-bc89de012345",
218
- })
219
- @ManyToOne(
220
- () => {
221
- return Service;
222
- },
223
- {
224
- eager: false,
225
- nullable: true,
226
- onDelete: "CASCADE",
227
- orphanedRowAction: "nullify",
228
- },
229
- )
230
- @JoinColumn({ name: "serviceId" })
231
- public service?: Service = undefined;
232
-
233
- @ColumnAccessControl({
234
- create: [
235
- Permission.ProjectOwner,
236
- Permission.ProjectAdmin,
237
- Permission.ProjectMember,
238
- Permission.SettingsAdmin,
239
- Permission.SettingsMember,
240
- Permission.CreateServiceDependency,
241
- ],
242
- read: [
243
- Permission.ProjectOwner,
244
- Permission.ProjectAdmin,
245
- Permission.ProjectMember,
246
- Permission.Viewer,
247
- Permission.SettingsAdmin,
248
- Permission.SettingsMember,
249
- Permission.SettingsViewer,
250
- Permission.ProjectMember,
251
- Permission.Viewer,
252
- Permission.SettingsAdmin,
253
- Permission.SettingsMember,
254
- Permission.SettingsViewer,
255
- Permission.ReadServiceDependency,
256
- ],
257
- update: [],
258
- })
259
- @Index()
260
- @TableColumn({
261
- type: TableColumnType.ObjectID,
262
- required: true,
263
- canReadOnRelationQuery: true,
264
- title: "Service ID",
265
- description: "ID of your OneUptime Service in which this object belongs",
266
- example: "f6a7b8c9-d0e1-2345-fa67-bc89de012345",
267
- })
268
- @Column({
269
- type: ColumnType.ObjectID,
270
- nullable: false,
271
- transformer: ObjectID.getDatabaseTransformer(),
272
- })
273
- public serviceId?: ObjectID = undefined;
274
-
275
- @ColumnAccessControl({
276
- create: [
277
- Permission.ProjectOwner,
278
- Permission.ProjectAdmin,
279
- Permission.ProjectMember,
280
- Permission.SettingsAdmin,
281
- Permission.SettingsMember,
282
- Permission.CreateServiceDependency,
283
- ],
284
- read: [
285
- Permission.ProjectOwner,
286
- Permission.ProjectAdmin,
287
- Permission.ProjectMember,
288
- Permission.Viewer,
289
- Permission.SettingsAdmin,
290
- Permission.SettingsMember,
291
- Permission.SettingsViewer,
292
- Permission.ProjectMember,
293
- Permission.Viewer,
294
- Permission.SettingsAdmin,
295
- Permission.SettingsMember,
296
- Permission.SettingsViewer,
297
- Permission.ReadServiceDependency,
298
- ],
299
- update: [],
300
- })
301
- @TableColumn({
302
- manyToOneRelationColumn: "dependencyServiceId",
303
- type: TableColumnType.Entity,
304
- modelType: Service,
305
- title: "Dependency Service",
306
- description: "Relation to Service Resource in which this object belongs",
307
- example: "a7b8c9d0-e1f2-3456-ab78-cd90ef123456",
308
- })
309
- @ManyToOne(
310
- () => {
311
- return Service;
312
- },
313
- {
314
- eager: false,
315
- nullable: true,
316
- onDelete: "CASCADE",
317
- orphanedRowAction: "nullify",
318
- },
319
- )
320
- @JoinColumn({ name: "dependencyServiceId" })
321
- public dependencyService?: Service = undefined;
322
-
323
- @ColumnAccessControl({
324
- create: [
325
- Permission.ProjectOwner,
326
- Permission.ProjectAdmin,
327
- Permission.ProjectMember,
328
- Permission.SettingsAdmin,
329
- Permission.SettingsMember,
330
- Permission.CreateServiceDependency,
331
- ],
332
- read: [
333
- Permission.ProjectOwner,
334
- Permission.ProjectAdmin,
335
- Permission.ProjectMember,
336
- Permission.Viewer,
337
- Permission.SettingsAdmin,
338
- Permission.SettingsMember,
339
- Permission.SettingsViewer,
340
- Permission.ProjectMember,
341
- Permission.Viewer,
342
- Permission.SettingsAdmin,
343
- Permission.SettingsMember,
344
- Permission.SettingsViewer,
345
- Permission.ReadServiceDependency,
346
- ],
347
- update: [],
348
- })
349
- @Index()
350
- @TableColumn({
351
- type: TableColumnType.ObjectID,
352
- required: true,
353
- canReadOnRelationQuery: true,
354
- title: "Dependency Service ID",
355
- description: "ID of your OneUptime Service in which this object belongs",
356
- example: "a7b8c9d0-e1f2-3456-ab78-cd90ef123456",
357
- })
358
- @Column({
359
- type: ColumnType.ObjectID,
360
- nullable: false,
361
- transformer: ObjectID.getDatabaseTransformer(),
362
- })
363
- public dependencyServiceId?: ObjectID = undefined;
364
-
365
- @ColumnAccessControl({
366
- create: [
367
- Permission.ProjectOwner,
368
- Permission.ProjectAdmin,
369
- Permission.ProjectMember,
370
- Permission.SettingsAdmin,
371
- Permission.SettingsMember,
372
- Permission.CreateServiceDependency,
373
- ],
374
- read: [
375
- Permission.ProjectOwner,
376
- Permission.ProjectAdmin,
377
- Permission.ProjectMember,
378
- Permission.Viewer,
379
- Permission.SettingsAdmin,
380
- Permission.SettingsMember,
381
- Permission.SettingsViewer,
382
- Permission.ProjectMember,
383
- Permission.Viewer,
384
- Permission.SettingsAdmin,
385
- Permission.SettingsMember,
386
- Permission.SettingsViewer,
387
- Permission.ReadServiceDependency,
388
- ],
389
- update: [],
390
- })
391
- @TableColumn({
392
- manyToOneRelationColumn: "createdByUserId",
393
- type: TableColumnType.Entity,
394
- modelType: User,
395
- title: "Created by User",
396
- description:
397
- "Relation to User who created this object (if this object was created by a User)",
398
- example: "c3d4e5f6-a7b8-9012-cd34-ef56ab789012",
399
- })
400
- @ManyToOne(
401
- () => {
402
- return User;
403
- },
404
- {
405
- eager: false,
406
- nullable: true,
407
- onDelete: "SET NULL",
408
- orphanedRowAction: "nullify",
409
- },
410
- )
411
- @JoinColumn({ name: "createdByUserId" })
412
- public createdByUser?: User = undefined;
413
-
414
- @ColumnAccessControl({
415
- create: [
416
- Permission.ProjectOwner,
417
- Permission.ProjectAdmin,
418
- Permission.ProjectMember,
419
- Permission.SettingsAdmin,
420
- Permission.SettingsMember,
421
- Permission.CreateServiceDependency,
422
- ],
423
- read: [
424
- Permission.ProjectOwner,
425
- Permission.ProjectAdmin,
426
- Permission.ProjectMember,
427
- Permission.Viewer,
428
- Permission.SettingsAdmin,
429
- Permission.SettingsMember,
430
- Permission.SettingsViewer,
431
- Permission.ProjectMember,
432
- Permission.Viewer,
433
- Permission.SettingsAdmin,
434
- Permission.SettingsMember,
435
- Permission.SettingsViewer,
436
- Permission.ReadServiceDependency,
437
- ],
438
- update: [],
439
- })
440
- @TableColumn({
441
- type: TableColumnType.ObjectID,
442
- title: "Created by User ID",
443
- description:
444
- "User ID who created this object (if this object was created by a User)",
445
- example: "c3d4e5f6-a7b8-9012-cd34-ef56ab789012",
446
- })
447
- @Column({
448
- type: ColumnType.ObjectID,
449
- nullable: true,
450
- transformer: ObjectID.getDatabaseTransformer(),
451
- })
452
- public createdByUserId?: ObjectID = undefined;
453
-
454
- @ColumnAccessControl({
455
- create: [],
456
- read: [
457
- Permission.ProjectOwner,
458
- Permission.ProjectAdmin,
459
- Permission.ProjectMember,
460
- Permission.Viewer,
461
- Permission.SettingsAdmin,
462
- Permission.SettingsMember,
463
- Permission.SettingsViewer,
464
- Permission.ProjectMember,
465
- Permission.Viewer,
466
- Permission.SettingsAdmin,
467
- Permission.SettingsMember,
468
- Permission.SettingsViewer,
469
- Permission.ReadServiceDependency,
470
- ],
471
- update: [],
472
- })
473
- @TableColumn({
474
- manyToOneRelationColumn: "deletedByUserId",
475
- type: TableColumnType.Entity,
476
- title: "Deleted by User",
477
- modelType: User,
478
- description:
479
- "Relation to User who deleted this object (if this object was deleted by a User)",
480
- example: "d4e5f6a7-b8c9-0123-de45-fa67bc890123",
481
- })
482
- @ManyToOne(
483
- () => {
484
- return User;
485
- },
486
- {
487
- cascade: false,
488
- eager: false,
489
- nullable: true,
490
- onDelete: "SET NULL",
491
- orphanedRowAction: "nullify",
492
- },
493
- )
494
- @JoinColumn({ name: "deletedByUserId" })
495
- public deletedByUser?: User = undefined;
496
-
497
- @ColumnAccessControl({
498
- create: [],
499
- read: [
500
- Permission.ProjectOwner,
501
- Permission.ProjectAdmin,
502
- Permission.ProjectMember,
503
- Permission.Viewer,
504
- Permission.SettingsAdmin,
505
- Permission.SettingsMember,
506
- Permission.SettingsViewer,
507
- Permission.ProjectMember,
508
- Permission.Viewer,
509
- Permission.SettingsAdmin,
510
- Permission.SettingsMember,
511
- Permission.SettingsViewer,
512
- Permission.ReadServiceDependency,
513
- ],
514
- update: [],
515
- })
516
- @TableColumn({
517
- type: TableColumnType.ObjectID,
518
- title: "Deleted by User ID",
519
- description:
520
- "User ID who deleted this object (if this object was deleted by a User)",
521
- example: "d4e5f6a7-b8c9-0123-de45-fa67bc890123",
522
- })
523
- @Column({
524
- type: ColumnType.ObjectID,
525
- nullable: true,
526
- transformer: ObjectID.getDatabaseTransformer(),
527
- })
528
- public deletedByUserId?: ObjectID = undefined;
529
- }
@@ -1,48 +0,0 @@
1
- import BadDataException from "../../Types/Exception/BadDataException";
2
- import CreateBy from "../Types/Database/CreateBy";
3
- import { OnCreate } from "../Types/Database/Hooks";
4
- import DatabaseService from "./DatabaseService";
5
- import Model from "../../Models/DatabaseModels/ServiceDependency";
6
- import ObjectID from "../../Types/ObjectID";
7
- import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
8
-
9
- export class Service extends DatabaseService<Model> {
10
- public constructor() {
11
- super(Model);
12
- }
13
-
14
- @CaptureSpan()
15
- protected override async onBeforeCreate(
16
- createBy: CreateBy<Model>,
17
- ): Promise<OnCreate<Model>> {
18
- // select a random color.
19
-
20
- if (!createBy.data.serviceId && !createBy.data.service) {
21
- throw new BadDataException("service is required");
22
- }
23
-
24
- if (
25
- !createBy.data.dependencyServiceId &&
26
- !createBy.data.dependencyService
27
- ) {
28
- throw new BadDataException("dependencyService is required");
29
- }
30
-
31
- // serviceId and dependencyServiceId should not be the same
32
- const serviceId: string | ObjectID | undefined =
33
- createBy.data.serviceId || createBy.data.service?._id;
34
- const dependencyServiceId: string | ObjectID | undefined =
35
- createBy.data.dependencyServiceId || createBy.data.dependencyService?._id;
36
-
37
- if (serviceId?.toString() === dependencyServiceId?.toString()) {
38
- throw new BadDataException("Service cannot depend on itself.");
39
- }
40
-
41
- return {
42
- carryForward: null,
43
- createBy: createBy,
44
- };
45
- }
46
- }
47
-
48
- export default new Service();