@oneuptime/common 9.3.8 → 9.3.10
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.
- package/Models/DatabaseModels/AIAgentTask.ts +18 -3
- package/Models/DatabaseModels/Index.ts +0 -5
- package/Models/DatabaseModels/MetricType.ts +7 -7
- package/Models/DatabaseModels/Service.ts +34 -8
- package/Models/DatabaseModels/TelemetryException.ts +11 -13
- package/Models/DatabaseModels/TelemetryUsageBilling.ts +11 -13
- package/Server/API/AIAgentDataAPI.ts +71 -108
- package/Server/Infrastructure/Postgres/SchemaMigrations/1767979055522-MigrationName.ts +743 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1767979448478-MigrationName.ts +224 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +4 -0
- package/Server/Services/Index.ts +0 -5
- package/Server/Services/OpenTelemetryIngestService.ts +26 -28
- package/Server/Services/ServiceService.ts +23 -0
- package/Server/Services/TelemetryExceptionService.ts +3 -4
- package/Server/Services/TelemetryUsageBillingService.ts +30 -32
- package/Server/Utils/Telemetry/Telemetry.ts +24 -23
- package/Types/AI/AIAgentTaskMetadata.ts +1 -1
- package/UI/Components/LogsViewer/LogsViewer.tsx +20 -23
- package/UI/Components/LogsViewer/components/LogDetailsPanel.tsx +3 -3
- package/UI/Components/LogsViewer/components/LogsTable.tsx +3 -4
- package/UI/Components/Navbar/NavBar.tsx +146 -52
- package/UI/Components/Navbar/NavBarMenu.tsx +87 -7
- package/UI/Components/Navbar/NavBarMenuItem.tsx +12 -0
- package/build/dist/Models/DatabaseModels/AIAgentTask.js +18 -3
- package/build/dist/Models/DatabaseModels/AIAgentTask.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Index.js +0 -4
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MetricType.js +8 -8
- package/build/dist/Models/DatabaseModels/MetricType.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Service.js +36 -8
- package/build/dist/Models/DatabaseModels/Service.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TelemetryException.js +14 -14
- package/build/dist/Models/DatabaseModels/TelemetryException.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TelemetryUsageBilling.js +14 -14
- package/build/dist/Models/DatabaseModels/TelemetryUsageBilling.js.map +1 -1
- package/build/dist/Server/API/AIAgentDataAPI.js +47 -76
- package/build/dist/Server/API/AIAgentDataAPI.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1767979055522-MigrationName.js +254 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1767979055522-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1767979448478-MigrationName.js +140 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1767979448478-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +4 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Services/Index.js +0 -4
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/OpenTelemetryIngestService.js +7 -7
- package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
- package/build/dist/Server/Services/ServiceService.js +23 -0
- package/build/dist/Server/Services/ServiceService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryExceptionService.js +3 -4
- package/build/dist/Server/Services/TelemetryExceptionService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryUsageBillingService.js +15 -16
- package/build/dist/Server/Services/TelemetryUsageBillingService.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/Telemetry.js +20 -20
- package/build/dist/Server/Utils/Telemetry/Telemetry.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/LogsViewer.js +5 -5
- package/build/dist/UI/Components/LogsViewer/LogsViewer.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogDetailsPanel.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogsTable.js.map +1 -1
- package/build/dist/UI/Components/Navbar/NavBar.js +58 -13
- package/build/dist/UI/Components/Navbar/NavBar.js.map +1 -1
- package/build/dist/UI/Components/Navbar/NavBarMenu.js +37 -5
- package/build/dist/UI/Components/Navbar/NavBarMenu.js.map +1 -1
- package/build/dist/UI/Components/Navbar/NavBarMenuItem.js +12 -0
- package/build/dist/UI/Components/Navbar/NavBarMenuItem.js.map +1 -1
- package/package.json +1 -1
- package/Models/DatabaseModels/ServiceTelemetryService.ts +0 -419
- package/Models/DatabaseModels/TelemetryService.ts +0 -529
- package/Server/Services/ServiceTelemetryServiceService.ts +0 -59
- package/Server/Services/TelemetryServiceService.ts +0 -53
- package/build/dist/Models/DatabaseModels/ServiceTelemetryService.js +0 -436
- package/build/dist/Models/DatabaseModels/ServiceTelemetryService.js.map +0 -1
- package/build/dist/Models/DatabaseModels/TelemetryService.js +0 -545
- package/build/dist/Models/DatabaseModels/TelemetryService.js.map +0 -1
- package/build/dist/Server/Services/ServiceTelemetryServiceService.js +0 -56
- package/build/dist/Server/Services/ServiceTelemetryServiceService.js.map +0 -1
- package/build/dist/Server/Services/TelemetryServiceService.js +0 -59
- package/build/dist/Server/Services/TelemetryServiceService.js.map +0 -1
|
@@ -1,529 +0,0 @@
|
|
|
1
|
-
import Label from "./Label";
|
|
2
|
-
import Project from "./Project";
|
|
3
|
-
import User from "./User";
|
|
4
|
-
import BaseModel from "./DatabaseBaseModel/DatabaseBaseModel";
|
|
5
|
-
import Route from "../../Types/API/Route";
|
|
6
|
-
import Color from "../../Types/Color";
|
|
7
|
-
import ColumnAccessControl from "../../Types/Database/AccessControl/ColumnAccessControl";
|
|
8
|
-
import TableAccessControl from "../../Types/Database/AccessControl/TableAccessControl";
|
|
9
|
-
import AccessControlColumn from "../../Types/Database/AccessControlColumn";
|
|
10
|
-
import ColumnLength from "../../Types/Database/ColumnLength";
|
|
11
|
-
import ColumnType from "../../Types/Database/ColumnType";
|
|
12
|
-
import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
|
|
13
|
-
import EnableDocumentation from "../../Types/Database/EnableDocumentation";
|
|
14
|
-
import EnableWorkflow from "../../Types/Database/EnableWorkflow";
|
|
15
|
-
import ColorField from "../../Types/Database/ColorField";
|
|
16
|
-
import SlugifyColumn from "../../Types/Database/SlugifyColumn";
|
|
17
|
-
import TableColumn from "../../Types/Database/TableColumn";
|
|
18
|
-
import TableColumnType from "../../Types/Database/TableColumnType";
|
|
19
|
-
import TableMetadata from "../../Types/Database/TableMetadata";
|
|
20
|
-
import TenantColumn from "../../Types/Database/TenantColumn";
|
|
21
|
-
import UniqueColumnBy from "../../Types/Database/UniqueColumnBy";
|
|
22
|
-
import IconProp from "../../Types/Icon/IconProp";
|
|
23
|
-
import ObjectID from "../../Types/ObjectID";
|
|
24
|
-
import Permission from "../../Types/Permission";
|
|
25
|
-
import {
|
|
26
|
-
Column,
|
|
27
|
-
Entity,
|
|
28
|
-
Index,
|
|
29
|
-
JoinColumn,
|
|
30
|
-
JoinTable,
|
|
31
|
-
ManyToMany,
|
|
32
|
-
ManyToOne,
|
|
33
|
-
} from "typeorm";
|
|
34
|
-
|
|
35
|
-
@AccessControlColumn("labels")
|
|
36
|
-
@EnableDocumentation()
|
|
37
|
-
@TenantColumn("projectId")
|
|
38
|
-
@TableAccessControl({
|
|
39
|
-
create: [
|
|
40
|
-
Permission.ProjectOwner,
|
|
41
|
-
Permission.ProjectAdmin,
|
|
42
|
-
Permission.ProjectMember,
|
|
43
|
-
Permission.CreateTelemetryService,
|
|
44
|
-
],
|
|
45
|
-
read: [
|
|
46
|
-
Permission.ProjectOwner,
|
|
47
|
-
Permission.ProjectAdmin,
|
|
48
|
-
Permission.ProjectMember,
|
|
49
|
-
Permission.ProjectMember,
|
|
50
|
-
Permission.ReadTelemetryService,
|
|
51
|
-
],
|
|
52
|
-
delete: [
|
|
53
|
-
Permission.ProjectOwner,
|
|
54
|
-
Permission.ProjectAdmin,
|
|
55
|
-
Permission.ProjectMember,
|
|
56
|
-
Permission.DeleteTelemetryService,
|
|
57
|
-
],
|
|
58
|
-
update: [
|
|
59
|
-
Permission.ProjectOwner,
|
|
60
|
-
Permission.ProjectAdmin,
|
|
61
|
-
Permission.ProjectMember,
|
|
62
|
-
Permission.EditTelemetryService,
|
|
63
|
-
],
|
|
64
|
-
})
|
|
65
|
-
@EnableWorkflow({
|
|
66
|
-
create: true,
|
|
67
|
-
delete: true,
|
|
68
|
-
update: true,
|
|
69
|
-
read: true,
|
|
70
|
-
})
|
|
71
|
-
@CrudApiEndpoint(new Route("/telemetry-service"))
|
|
72
|
-
@SlugifyColumn("name", "slug")
|
|
73
|
-
@TableMetadata({
|
|
74
|
-
tableName: "TelemetryService",
|
|
75
|
-
singularName: "Telemetry Service",
|
|
76
|
-
pluralName: "Telemetry Services",
|
|
77
|
-
icon: IconProp.SquareStack,
|
|
78
|
-
tableDescription:
|
|
79
|
-
"Telemetry Services are the services that you can use to monitor your services. You can create multiple Telemetry Services and use them to monitor your services.",
|
|
80
|
-
})
|
|
81
|
-
@Entity({
|
|
82
|
-
name: "TelemetryService",
|
|
83
|
-
})
|
|
84
|
-
export default class TelemetryService extends BaseModel {
|
|
85
|
-
@ColumnAccessControl({
|
|
86
|
-
create: [
|
|
87
|
-
Permission.ProjectOwner,
|
|
88
|
-
Permission.ProjectAdmin,
|
|
89
|
-
Permission.ProjectMember,
|
|
90
|
-
Permission.CreateTelemetryService,
|
|
91
|
-
],
|
|
92
|
-
read: [
|
|
93
|
-
Permission.ProjectOwner,
|
|
94
|
-
Permission.ProjectAdmin,
|
|
95
|
-
Permission.ProjectMember,
|
|
96
|
-
Permission.ProjectMember,
|
|
97
|
-
Permission.ReadTelemetryService,
|
|
98
|
-
],
|
|
99
|
-
update: [],
|
|
100
|
-
})
|
|
101
|
-
@TableColumn({
|
|
102
|
-
manyToOneRelationColumn: "projectId",
|
|
103
|
-
type: TableColumnType.Entity,
|
|
104
|
-
modelType: Project,
|
|
105
|
-
title: "Project",
|
|
106
|
-
description: "Relation to Project Resource in which this object belongs",
|
|
107
|
-
})
|
|
108
|
-
@ManyToOne(
|
|
109
|
-
() => {
|
|
110
|
-
return Project;
|
|
111
|
-
},
|
|
112
|
-
{
|
|
113
|
-
eager: false,
|
|
114
|
-
nullable: true,
|
|
115
|
-
onDelete: "CASCADE",
|
|
116
|
-
orphanedRowAction: "nullify",
|
|
117
|
-
},
|
|
118
|
-
)
|
|
119
|
-
@JoinColumn({ name: "projectId" })
|
|
120
|
-
public project?: Project = undefined;
|
|
121
|
-
|
|
122
|
-
@ColumnAccessControl({
|
|
123
|
-
create: [
|
|
124
|
-
Permission.ProjectOwner,
|
|
125
|
-
Permission.ProjectAdmin,
|
|
126
|
-
Permission.ProjectMember,
|
|
127
|
-
Permission.CreateTelemetryService,
|
|
128
|
-
],
|
|
129
|
-
read: [
|
|
130
|
-
Permission.ProjectOwner,
|
|
131
|
-
Permission.ProjectAdmin,
|
|
132
|
-
Permission.ProjectMember,
|
|
133
|
-
Permission.ProjectMember,
|
|
134
|
-
Permission.ReadTelemetryService,
|
|
135
|
-
],
|
|
136
|
-
update: [],
|
|
137
|
-
})
|
|
138
|
-
@Index()
|
|
139
|
-
@TableColumn({
|
|
140
|
-
type: TableColumnType.ObjectID,
|
|
141
|
-
required: true,
|
|
142
|
-
canReadOnRelationQuery: true,
|
|
143
|
-
title: "Project ID",
|
|
144
|
-
description: "ID of your OneUptime Project in which this object belongs",
|
|
145
|
-
example: "5f8b9c0d-e1a2-4b3c-8d5e-6f7a8b9c0d1e",
|
|
146
|
-
})
|
|
147
|
-
@Column({
|
|
148
|
-
type: ColumnType.ObjectID,
|
|
149
|
-
nullable: false,
|
|
150
|
-
transformer: ObjectID.getDatabaseTransformer(),
|
|
151
|
-
})
|
|
152
|
-
public projectId?: ObjectID = undefined;
|
|
153
|
-
|
|
154
|
-
@ColumnAccessControl({
|
|
155
|
-
create: [
|
|
156
|
-
Permission.ProjectOwner,
|
|
157
|
-
Permission.ProjectAdmin,
|
|
158
|
-
Permission.ProjectMember,
|
|
159
|
-
Permission.CreateTelemetryService,
|
|
160
|
-
],
|
|
161
|
-
read: [
|
|
162
|
-
Permission.ProjectOwner,
|
|
163
|
-
Permission.ProjectAdmin,
|
|
164
|
-
Permission.ProjectMember,
|
|
165
|
-
Permission.ProjectMember,
|
|
166
|
-
Permission.ReadTelemetryService,
|
|
167
|
-
],
|
|
168
|
-
update: [
|
|
169
|
-
Permission.ProjectOwner,
|
|
170
|
-
Permission.ProjectAdmin,
|
|
171
|
-
Permission.ProjectMember,
|
|
172
|
-
Permission.EditTelemetryService,
|
|
173
|
-
],
|
|
174
|
-
})
|
|
175
|
-
@TableColumn({
|
|
176
|
-
required: true,
|
|
177
|
-
type: TableColumnType.ShortText,
|
|
178
|
-
canReadOnRelationQuery: true,
|
|
179
|
-
title: "Name",
|
|
180
|
-
description: "Any friendly name of this object",
|
|
181
|
-
example: "Payment API Service",
|
|
182
|
-
})
|
|
183
|
-
@Column({
|
|
184
|
-
nullable: false,
|
|
185
|
-
type: ColumnType.ShortText,
|
|
186
|
-
length: ColumnLength.ShortText,
|
|
187
|
-
})
|
|
188
|
-
@UniqueColumnBy("projectId")
|
|
189
|
-
public name?: string = undefined;
|
|
190
|
-
|
|
191
|
-
@ColumnAccessControl({
|
|
192
|
-
create: [],
|
|
193
|
-
read: [
|
|
194
|
-
Permission.ProjectOwner,
|
|
195
|
-
Permission.ProjectAdmin,
|
|
196
|
-
Permission.ProjectMember,
|
|
197
|
-
Permission.ProjectMember,
|
|
198
|
-
Permission.ReadTelemetryService,
|
|
199
|
-
],
|
|
200
|
-
update: [],
|
|
201
|
-
})
|
|
202
|
-
@TableColumn({
|
|
203
|
-
required: true,
|
|
204
|
-
unique: true,
|
|
205
|
-
type: TableColumnType.Slug,
|
|
206
|
-
computed: true,
|
|
207
|
-
title: "Slug",
|
|
208
|
-
description: "Friendly globally unique name for your object",
|
|
209
|
-
})
|
|
210
|
-
@Column({
|
|
211
|
-
nullable: false,
|
|
212
|
-
type: ColumnType.Slug,
|
|
213
|
-
length: ColumnLength.Slug,
|
|
214
|
-
})
|
|
215
|
-
public slug?: string = undefined;
|
|
216
|
-
|
|
217
|
-
@ColumnAccessControl({
|
|
218
|
-
create: [
|
|
219
|
-
Permission.ProjectOwner,
|
|
220
|
-
Permission.ProjectAdmin,
|
|
221
|
-
Permission.ProjectMember,
|
|
222
|
-
Permission.CreateTelemetryService,
|
|
223
|
-
],
|
|
224
|
-
read: [
|
|
225
|
-
Permission.ProjectOwner,
|
|
226
|
-
Permission.ProjectAdmin,
|
|
227
|
-
Permission.ProjectMember,
|
|
228
|
-
Permission.ProjectMember,
|
|
229
|
-
Permission.ReadTelemetryService,
|
|
230
|
-
],
|
|
231
|
-
update: [
|
|
232
|
-
Permission.ProjectOwner,
|
|
233
|
-
Permission.ProjectAdmin,
|
|
234
|
-
Permission.ProjectMember,
|
|
235
|
-
Permission.EditTelemetryService,
|
|
236
|
-
],
|
|
237
|
-
})
|
|
238
|
-
@TableColumn({
|
|
239
|
-
required: false,
|
|
240
|
-
type: TableColumnType.LongText,
|
|
241
|
-
title: "Description",
|
|
242
|
-
description: "Friendly description that will help you remember",
|
|
243
|
-
example: "Telemetry and monitoring for the payment processing API service",
|
|
244
|
-
})
|
|
245
|
-
@Column({
|
|
246
|
-
nullable: true,
|
|
247
|
-
type: ColumnType.LongText,
|
|
248
|
-
length: ColumnLength.LongText,
|
|
249
|
-
})
|
|
250
|
-
public description?: string = undefined;
|
|
251
|
-
|
|
252
|
-
@ColumnAccessControl({
|
|
253
|
-
create: [
|
|
254
|
-
Permission.ProjectOwner,
|
|
255
|
-
Permission.ProjectAdmin,
|
|
256
|
-
Permission.ProjectMember,
|
|
257
|
-
Permission.CreateTelemetryService,
|
|
258
|
-
],
|
|
259
|
-
read: [
|
|
260
|
-
Permission.ProjectOwner,
|
|
261
|
-
Permission.ProjectAdmin,
|
|
262
|
-
Permission.ProjectMember,
|
|
263
|
-
Permission.ProjectMember,
|
|
264
|
-
Permission.ReadTelemetryService,
|
|
265
|
-
],
|
|
266
|
-
update: [],
|
|
267
|
-
})
|
|
268
|
-
@TableColumn({
|
|
269
|
-
manyToOneRelationColumn: "createdByUserId",
|
|
270
|
-
type: TableColumnType.Entity,
|
|
271
|
-
modelType: User,
|
|
272
|
-
title: "Created by User",
|
|
273
|
-
description:
|
|
274
|
-
"Relation to User who created this object (if this object was created by a User)",
|
|
275
|
-
})
|
|
276
|
-
@ManyToOne(
|
|
277
|
-
() => {
|
|
278
|
-
return User;
|
|
279
|
-
},
|
|
280
|
-
{
|
|
281
|
-
eager: false,
|
|
282
|
-
nullable: true,
|
|
283
|
-
onDelete: "SET NULL",
|
|
284
|
-
orphanedRowAction: "nullify",
|
|
285
|
-
},
|
|
286
|
-
)
|
|
287
|
-
@JoinColumn({ name: "createdByUserId" })
|
|
288
|
-
public createdByUser?: User = undefined;
|
|
289
|
-
|
|
290
|
-
@ColumnAccessControl({
|
|
291
|
-
create: [
|
|
292
|
-
Permission.ProjectOwner,
|
|
293
|
-
Permission.ProjectAdmin,
|
|
294
|
-
Permission.ProjectMember,
|
|
295
|
-
Permission.CreateTelemetryService,
|
|
296
|
-
],
|
|
297
|
-
read: [
|
|
298
|
-
Permission.ProjectOwner,
|
|
299
|
-
Permission.ProjectAdmin,
|
|
300
|
-
Permission.ProjectMember,
|
|
301
|
-
Permission.ProjectMember,
|
|
302
|
-
Permission.ReadTelemetryService,
|
|
303
|
-
],
|
|
304
|
-
update: [],
|
|
305
|
-
})
|
|
306
|
-
@TableColumn({
|
|
307
|
-
type: TableColumnType.ObjectID,
|
|
308
|
-
title: "Created by User ID",
|
|
309
|
-
description:
|
|
310
|
-
"User ID who created this object (if this object was created by a User)",
|
|
311
|
-
example: "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
|
312
|
-
})
|
|
313
|
-
@Column({
|
|
314
|
-
type: ColumnType.ObjectID,
|
|
315
|
-
nullable: true,
|
|
316
|
-
transformer: ObjectID.getDatabaseTransformer(),
|
|
317
|
-
})
|
|
318
|
-
public createdByUserId?: ObjectID = undefined;
|
|
319
|
-
|
|
320
|
-
@ColumnAccessControl({
|
|
321
|
-
create: [],
|
|
322
|
-
read: [
|
|
323
|
-
Permission.ProjectOwner,
|
|
324
|
-
Permission.ProjectAdmin,
|
|
325
|
-
Permission.ProjectMember,
|
|
326
|
-
Permission.ProjectMember,
|
|
327
|
-
Permission.ReadTelemetryService,
|
|
328
|
-
],
|
|
329
|
-
update: [],
|
|
330
|
-
})
|
|
331
|
-
@TableColumn({
|
|
332
|
-
manyToOneRelationColumn: "deletedByUserId",
|
|
333
|
-
type: TableColumnType.Entity,
|
|
334
|
-
title: "Deleted by User",
|
|
335
|
-
modelType: User,
|
|
336
|
-
description:
|
|
337
|
-
"Relation to User who deleted this object (if this object was deleted by a User)",
|
|
338
|
-
})
|
|
339
|
-
@ManyToOne(
|
|
340
|
-
() => {
|
|
341
|
-
return User;
|
|
342
|
-
},
|
|
343
|
-
{
|
|
344
|
-
cascade: false,
|
|
345
|
-
eager: false,
|
|
346
|
-
nullable: true,
|
|
347
|
-
onDelete: "SET NULL",
|
|
348
|
-
orphanedRowAction: "nullify",
|
|
349
|
-
},
|
|
350
|
-
)
|
|
351
|
-
@JoinColumn({ name: "deletedByUserId" })
|
|
352
|
-
public deletedByUser?: User = undefined;
|
|
353
|
-
|
|
354
|
-
@ColumnAccessControl({
|
|
355
|
-
create: [],
|
|
356
|
-
read: [
|
|
357
|
-
Permission.ProjectOwner,
|
|
358
|
-
Permission.ProjectAdmin,
|
|
359
|
-
Permission.ProjectMember,
|
|
360
|
-
Permission.ProjectMember,
|
|
361
|
-
Permission.ReadTelemetryService,
|
|
362
|
-
],
|
|
363
|
-
update: [],
|
|
364
|
-
})
|
|
365
|
-
@TableColumn({
|
|
366
|
-
type: TableColumnType.ObjectID,
|
|
367
|
-
title: "Deleted by User ID",
|
|
368
|
-
description:
|
|
369
|
-
"User ID who deleted this object (if this object was deleted by a User)",
|
|
370
|
-
example: "b2c3d4e5-f6a7-8901-bcde-f2345678901a",
|
|
371
|
-
})
|
|
372
|
-
@Column({
|
|
373
|
-
type: ColumnType.ObjectID,
|
|
374
|
-
nullable: true,
|
|
375
|
-
transformer: ObjectID.getDatabaseTransformer(),
|
|
376
|
-
})
|
|
377
|
-
public deletedByUserId?: ObjectID = undefined;
|
|
378
|
-
|
|
379
|
-
@ColumnAccessControl({
|
|
380
|
-
create: [
|
|
381
|
-
Permission.ProjectOwner,
|
|
382
|
-
Permission.ProjectAdmin,
|
|
383
|
-
Permission.ProjectMember,
|
|
384
|
-
Permission.CreateTelemetryService,
|
|
385
|
-
],
|
|
386
|
-
read: [
|
|
387
|
-
Permission.ProjectOwner,
|
|
388
|
-
Permission.ProjectAdmin,
|
|
389
|
-
Permission.ProjectMember,
|
|
390
|
-
Permission.ProjectMember,
|
|
391
|
-
Permission.ReadTelemetryService,
|
|
392
|
-
],
|
|
393
|
-
update: [
|
|
394
|
-
Permission.ProjectOwner,
|
|
395
|
-
Permission.ProjectAdmin,
|
|
396
|
-
Permission.ProjectMember,
|
|
397
|
-
Permission.EditTelemetryService,
|
|
398
|
-
],
|
|
399
|
-
})
|
|
400
|
-
@TableColumn({
|
|
401
|
-
required: false,
|
|
402
|
-
type: TableColumnType.EntityArray,
|
|
403
|
-
modelType: Label,
|
|
404
|
-
title: "Labels",
|
|
405
|
-
description:
|
|
406
|
-
"Relation to Labels Array where this object is categorized in.",
|
|
407
|
-
})
|
|
408
|
-
@ManyToMany(
|
|
409
|
-
() => {
|
|
410
|
-
return Label;
|
|
411
|
-
},
|
|
412
|
-
{ eager: false },
|
|
413
|
-
)
|
|
414
|
-
@JoinTable({
|
|
415
|
-
name: "TelemetryServiceLabel",
|
|
416
|
-
inverseJoinColumn: {
|
|
417
|
-
name: "labelId",
|
|
418
|
-
referencedColumnName: "_id",
|
|
419
|
-
},
|
|
420
|
-
joinColumn: {
|
|
421
|
-
name: "telemetryServiceId",
|
|
422
|
-
referencedColumnName: "_id",
|
|
423
|
-
},
|
|
424
|
-
})
|
|
425
|
-
public labels?: Array<Label> = undefined;
|
|
426
|
-
|
|
427
|
-
// This field is deprecared and is no longer used.
|
|
428
|
-
@ColumnAccessControl({
|
|
429
|
-
create: [],
|
|
430
|
-
read: [
|
|
431
|
-
Permission.ProjectOwner,
|
|
432
|
-
Permission.ProjectAdmin,
|
|
433
|
-
Permission.ProjectMember,
|
|
434
|
-
Permission.ProjectMember,
|
|
435
|
-
Permission.ReadTelemetryService,
|
|
436
|
-
],
|
|
437
|
-
update: [
|
|
438
|
-
Permission.ProjectOwner,
|
|
439
|
-
Permission.ProjectAdmin,
|
|
440
|
-
Permission.ProjectMember,
|
|
441
|
-
Permission.EditTelemetryService,
|
|
442
|
-
],
|
|
443
|
-
})
|
|
444
|
-
@Index()
|
|
445
|
-
@TableColumn({
|
|
446
|
-
type: TableColumnType.ObjectID,
|
|
447
|
-
isDefaultValueColumn: false,
|
|
448
|
-
computed: true,
|
|
449
|
-
title: "Service Token",
|
|
450
|
-
description: "Service Token for this telemetry service",
|
|
451
|
-
example: "e5f6a7b8-c9d0-1234-efab-56789012cdef",
|
|
452
|
-
})
|
|
453
|
-
@Column({
|
|
454
|
-
type: ColumnType.ObjectID,
|
|
455
|
-
nullable: false,
|
|
456
|
-
transformer: ObjectID.getDatabaseTransformer(),
|
|
457
|
-
})
|
|
458
|
-
public telemetryServiceToken?: ObjectID = undefined;
|
|
459
|
-
|
|
460
|
-
@ColumnAccessControl({
|
|
461
|
-
create: [
|
|
462
|
-
Permission.ProjectOwner,
|
|
463
|
-
Permission.ProjectAdmin,
|
|
464
|
-
Permission.ProjectMember,
|
|
465
|
-
Permission.CreateTelemetryService,
|
|
466
|
-
],
|
|
467
|
-
read: [
|
|
468
|
-
Permission.ProjectOwner,
|
|
469
|
-
Permission.ProjectAdmin,
|
|
470
|
-
Permission.ProjectMember,
|
|
471
|
-
Permission.ProjectMember,
|
|
472
|
-
Permission.ReadTelemetryService,
|
|
473
|
-
],
|
|
474
|
-
update: [
|
|
475
|
-
Permission.ProjectOwner,
|
|
476
|
-
Permission.ProjectAdmin,
|
|
477
|
-
Permission.ProjectMember,
|
|
478
|
-
Permission.EditTelemetryService,
|
|
479
|
-
],
|
|
480
|
-
})
|
|
481
|
-
@TableColumn({
|
|
482
|
-
type: TableColumnType.Number,
|
|
483
|
-
title: "Retain Telemetry Data For Days",
|
|
484
|
-
description: "Number of days to retain telemetry data for this service.",
|
|
485
|
-
})
|
|
486
|
-
@Column({
|
|
487
|
-
type: ColumnType.Number,
|
|
488
|
-
nullable: true,
|
|
489
|
-
unique: false,
|
|
490
|
-
default: 15,
|
|
491
|
-
})
|
|
492
|
-
public retainTelemetryDataForDays?: number = undefined;
|
|
493
|
-
|
|
494
|
-
@ColumnAccessControl({
|
|
495
|
-
create: [
|
|
496
|
-
Permission.ProjectOwner,
|
|
497
|
-
Permission.ProjectAdmin,
|
|
498
|
-
Permission.ProjectMember,
|
|
499
|
-
Permission.CreateTelemetryService,
|
|
500
|
-
],
|
|
501
|
-
read: [
|
|
502
|
-
Permission.ProjectOwner,
|
|
503
|
-
Permission.ProjectAdmin,
|
|
504
|
-
Permission.ProjectMember,
|
|
505
|
-
Permission.ProjectMember,
|
|
506
|
-
Permission.ReadTelemetryService,
|
|
507
|
-
],
|
|
508
|
-
update: [
|
|
509
|
-
Permission.ProjectOwner,
|
|
510
|
-
Permission.ProjectAdmin,
|
|
511
|
-
Permission.ProjectMember,
|
|
512
|
-
Permission.EditTelemetryService,
|
|
513
|
-
],
|
|
514
|
-
})
|
|
515
|
-
@ColorField()
|
|
516
|
-
@TableColumn({
|
|
517
|
-
type: TableColumnType.Color,
|
|
518
|
-
title: "Service Color",
|
|
519
|
-
description: "Color for this telemetry service",
|
|
520
|
-
canReadOnRelationQuery: true,
|
|
521
|
-
})
|
|
522
|
-
@Column({
|
|
523
|
-
type: ColumnType.Color,
|
|
524
|
-
nullable: true,
|
|
525
|
-
unique: false,
|
|
526
|
-
transformer: Color.getDatabaseTransformer(),
|
|
527
|
-
})
|
|
528
|
-
public serviceColor?: Color = undefined;
|
|
529
|
-
}
|
|
@@ -1,59 +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/ServiceTelemetryService";
|
|
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 (!createBy.data.telemetryService && !createBy.data.telemetryServiceId) {
|
|
25
|
-
throw new BadDataException("telemetryService is required");
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
// serviceId and dependencyServiceId should not be the same
|
|
29
|
-
const serviceId: string | ObjectID | undefined =
|
|
30
|
-
createBy.data.serviceId || createBy.data.service?._id;
|
|
31
|
-
const telemetryServiceId: string | ObjectID | undefined =
|
|
32
|
-
createBy.data.telemetryServiceId || createBy.data.telemetryService?._id;
|
|
33
|
-
|
|
34
|
-
// check if this telemetryService is already added to the service for this service.
|
|
35
|
-
|
|
36
|
-
const existingtelemetryService: Model | null = await this.findOneBy({
|
|
37
|
-
query: {
|
|
38
|
-
serviceId: serviceId as ObjectID,
|
|
39
|
-
telemetryServiceId: telemetryServiceId as ObjectID,
|
|
40
|
-
},
|
|
41
|
-
props: {
|
|
42
|
-
isRoot: true,
|
|
43
|
-
},
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
if (existingtelemetryService) {
|
|
47
|
-
throw new BadDataException(
|
|
48
|
-
"Telemetry Service already exists for this service",
|
|
49
|
-
);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
return {
|
|
53
|
-
carryForward: null,
|
|
54
|
-
createBy: createBy,
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
export default new Service();
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import CreateBy from "../Types/Database/CreateBy";
|
|
2
|
-
import { OnCreate } from "../Types/Database/Hooks";
|
|
3
|
-
import DatabaseService from "./DatabaseService";
|
|
4
|
-
import ArrayUtil from "../../Utils/Array";
|
|
5
|
-
import { BrightColors } from "../../Types/BrandColors";
|
|
6
|
-
import BadDataException from "../../Types/Exception/BadDataException";
|
|
7
|
-
import ObjectID from "../../Types/ObjectID";
|
|
8
|
-
import Model from "../../Models/DatabaseModels/TelemetryService";
|
|
9
|
-
import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
|
|
10
|
-
|
|
11
|
-
export class Service extends DatabaseService<Model> {
|
|
12
|
-
public constructor() {
|
|
13
|
-
super(Model);
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
@CaptureSpan()
|
|
17
|
-
protected override async onBeforeCreate(
|
|
18
|
-
createBy: CreateBy<Model>,
|
|
19
|
-
): Promise<OnCreate<Model>> {
|
|
20
|
-
createBy.data.telemetryServiceToken = ObjectID.generate();
|
|
21
|
-
|
|
22
|
-
// select a random color.
|
|
23
|
-
createBy.data.serviceColor = ArrayUtil.selectItemByRandom(BrightColors);
|
|
24
|
-
|
|
25
|
-
return {
|
|
26
|
-
carryForward: null,
|
|
27
|
-
createBy: createBy,
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
@CaptureSpan()
|
|
32
|
-
public async getTelemetryDataRetentionInDays(
|
|
33
|
-
telemetryServiceId: ObjectID,
|
|
34
|
-
): Promise<number> {
|
|
35
|
-
const project: Model | null = await this.findOneById({
|
|
36
|
-
id: telemetryServiceId,
|
|
37
|
-
select: {
|
|
38
|
-
retainTelemetryDataForDays: true,
|
|
39
|
-
},
|
|
40
|
-
props: {
|
|
41
|
-
isRoot: true,
|
|
42
|
-
},
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
if (!project) {
|
|
46
|
-
throw new BadDataException("Project not found");
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
return project.retainTelemetryDataForDays || 15; // default is 15 days.
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
export default new Service();
|