mirror of
https://github.com/OneUptime/oneuptime.git
synced 2026-04-06 00:32:12 +02:00
add guage
This commit is contained in:
@@ -122,6 +122,7 @@ import LogService from './LogService';
|
||||
import SpanService from './SpanService';
|
||||
import MetricSumService from './MetricSumService';
|
||||
import MetricHistogramService from './MetricHistogramService';
|
||||
import MetricGaugeService from './MetricGaugeService';
|
||||
|
||||
const services: Array<BaseService> = [
|
||||
PromoCodeService,
|
||||
@@ -235,6 +236,6 @@ const services: Array<BaseService> = [
|
||||
|
||||
export const AnalyticsServices: Array<
|
||||
AnalyticsDatabaseService<AnalyticsBaseModel>
|
||||
> = [LogService, SpanService, MetricSumService, MetricHistogramService];
|
||||
> = [LogService, SpanService, MetricSumService, MetricHistogramService, MetricGaugeService];
|
||||
|
||||
export default services;
|
||||
|
||||
11
CommonServer/Services/MetricGaugeService.ts
Normal file
11
CommonServer/Services/MetricGaugeService.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
import MetricGauge from 'Model/AnalyticsModels/MetricGauge';
|
||||
import AnalyticsDatabaseService from './AnalyticsDatabaseService';
|
||||
import ClickhouseDatabase from '../Infrastructure/ClickhouseDatabase';
|
||||
|
||||
export class MetricGaugeService extends AnalyticsDatabaseService<MetricGauge> {
|
||||
public constructor(clickhouseDatabase?: ClickhouseDatabase | undefined) {
|
||||
super({ modelType: MetricGauge, database: clickhouseDatabase });
|
||||
}
|
||||
}
|
||||
|
||||
export default new MetricGaugeService();
|
||||
@@ -56,12 +56,17 @@ builder.Services.AddOpenTelemetry()
|
||||
System.Console.WriteLine($"OTLP Exporter is using {opt.Protocol} protocol and endpoint {opt.Endpoint}");
|
||||
}));
|
||||
|
||||
|
||||
// Custom metrics for the application
|
||||
var greeterMeter = new Meter("OtPrGrYa.Example");
|
||||
|
||||
// Metrics.
|
||||
builder.Services.AddOpenTelemetry()
|
||||
.ConfigureResource(resource => resource
|
||||
.AddService(serviceName: builder.Environment.ApplicationName))
|
||||
.WithMetrics(metrics => metrics
|
||||
.AddAspNetCoreInstrumentation()
|
||||
.AddMeter("OtPrGrYa.Example")
|
||||
.AddConsoleExporter((exporterOptions, metricReaderOptions) =>
|
||||
{
|
||||
metricReaderOptions.PeriodicExportingMetricReaderOptions.ExportIntervalMilliseconds = 1000;
|
||||
@@ -75,15 +80,29 @@ builder.Services.AddOpenTelemetry()
|
||||
}
|
||||
|
||||
System.Console.WriteLine($"OTLP Exporter is using {opt.Protocol} protocol and endpoint {opt.Endpoint}");
|
||||
|
||||
}));
|
||||
|
||||
|
||||
|
||||
|
||||
var app = builder.Build();
|
||||
|
||||
|
||||
// Custom metrics for the application
|
||||
var greeterMeter = new Meter("OtPrGrYa.Example", "1.0.0");
|
||||
|
||||
|
||||
var value = 1;
|
||||
|
||||
int getGuage()
|
||||
{
|
||||
value++;
|
||||
return value;
|
||||
}
|
||||
|
||||
greeterMeter.CreateObservableGauge("ThreadCount", () => new[] { new Measurement<int>(ThreadPool.ThreadCount) });
|
||||
var countGreetings = greeterMeter.CreateCounter<int>("greetings.count", description: "Counts the number of greetings");
|
||||
|
||||
|
||||
// Custom ActivitySource for the application
|
||||
var greeterActivitySource = new ActivitySource("OtPrGrJa.Example");
|
||||
|
||||
|
||||
BIN
Examples/otel-dotnet/bin/Debug/net6.0/OpenTelemetry.Instrumentation.Runtime.dll
Executable file
BIN
Examples/otel-dotnet/bin/Debug/net6.0/OpenTelemetry.Instrumentation.Runtime.dll
Executable file
Binary file not shown.
@@ -11,7 +11,8 @@
|
||||
"OpenTelemetry.Exporter.Console": "1.6.0",
|
||||
"OpenTelemetry.Exporter.OpenTelemetryProtocol": "1.6.0",
|
||||
"OpenTelemetry.Extensions.Hosting": "1.6.0",
|
||||
"OpenTelemetry.Instrumentation.AspNetCore": "1.5.1-beta.1"
|
||||
"OpenTelemetry.Instrumentation.AspNetCore": "1.5.1-beta.1",
|
||||
"OpenTelemetry.Instrumentation.Runtime": "1.5.1"
|
||||
},
|
||||
"runtime": {
|
||||
"otel-dotnet.dll": {}
|
||||
@@ -207,6 +208,17 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"OpenTelemetry.Instrumentation.Runtime/1.5.1": {
|
||||
"dependencies": {
|
||||
"OpenTelemetry.Api": "1.6.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/OpenTelemetry.Instrumentation.Runtime.dll": {
|
||||
"assemblyVersion": "1.5.1.0",
|
||||
"fileVersion": "1.5.1.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Diagnostics.DiagnosticSource/7.0.2": {
|
||||
"dependencies": {
|
||||
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
|
||||
@@ -398,6 +410,13 @@
|
||||
"path": "opentelemetry.instrumentation.aspnetcore/1.5.1-beta.1",
|
||||
"hashPath": "opentelemetry.instrumentation.aspnetcore.1.5.1-beta.1.nupkg.sha512"
|
||||
},
|
||||
"OpenTelemetry.Instrumentation.Runtime/1.5.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-F3uYt/T5+2YZCxZmAdoK7u5AZxqDLYaTj5ddZ//Cnn9x+Lys9D9wRzqizQgKpAQJJ6prVh0TcBEbCCpEKKDZvw==",
|
||||
"path": "opentelemetry.instrumentation.runtime/1.5.1",
|
||||
"hashPath": "opentelemetry.instrumentation.runtime.1.5.1.nupkg.sha512"
|
||||
},
|
||||
"System.Diagnostics.DiagnosticSource/7.0.2": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
||||
02d49b3f532cf4a85b56dd95b3e5d85b0107dabb
|
||||
dd731758440b2020b7f6d3116dc659916e251de0
|
||||
|
||||
@@ -33,3 +33,4 @@
|
||||
/Users/nawazdhandala/Projects/OneUptime/oneuptime/Examples/otel-dotnet/bin/Debug/net6.0/Grpc.Net.Client.dll
|
||||
/Users/nawazdhandala/Projects/OneUptime/oneuptime/Examples/otel-dotnet/bin/Debug/net6.0/Grpc.Net.Common.dll
|
||||
/Users/nawazdhandala/Projects/OneUptime/oneuptime/Examples/otel-dotnet/bin/Debug/net6.0/OpenTelemetry.Exporter.OpenTelemetryProtocol.dll
|
||||
/Users/nawazdhandala/Projects/OneUptime/oneuptime/Examples/otel-dotnet/bin/Debug/net6.0/OpenTelemetry.Instrumentation.Runtime.dll
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -53,6 +53,10 @@
|
||||
"OpenTelemetry.Instrumentation.AspNetCore": {
|
||||
"target": "Package",
|
||||
"version": "[1.5.1-beta.1, )"
|
||||
},
|
||||
"OpenTelemetry.Instrumentation.Runtime": {
|
||||
"target": "Package",
|
||||
"version": "[1.5.1, )"
|
||||
}
|
||||
},
|
||||
"imports": [
|
||||
|
||||
@@ -300,6 +300,18 @@
|
||||
"Microsoft.AspNetCore.App"
|
||||
]
|
||||
},
|
||||
"OpenTelemetry.Instrumentation.Runtime/1.5.1": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"OpenTelemetry.Api": "[1.5.1, 2.0.0)"
|
||||
},
|
||||
"compile": {
|
||||
"lib/net6.0/OpenTelemetry.Instrumentation.Runtime.dll": {}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/OpenTelemetry.Instrumentation.Runtime.dll": {}
|
||||
}
|
||||
},
|
||||
"System.Diagnostics.DiagnosticSource/7.0.2": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
@@ -794,6 +806,24 @@
|
||||
"opentelemetry.instrumentation.aspnetcore.nuspec"
|
||||
]
|
||||
},
|
||||
"OpenTelemetry.Instrumentation.Runtime/1.5.1": {
|
||||
"sha512": "F3uYt/T5+2YZCxZmAdoK7u5AZxqDLYaTj5ddZ//Cnn9x+Lys9D9wRzqizQgKpAQJJ6prVh0TcBEbCCpEKKDZvw==",
|
||||
"type": "package",
|
||||
"path": "opentelemetry.instrumentation.runtime/1.5.1",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"lib/net462/OpenTelemetry.Instrumentation.Runtime.dll",
|
||||
"lib/net462/OpenTelemetry.Instrumentation.Runtime.xml",
|
||||
"lib/net6.0/OpenTelemetry.Instrumentation.Runtime.dll",
|
||||
"lib/net6.0/OpenTelemetry.Instrumentation.Runtime.xml",
|
||||
"lib/netstandard2.0/OpenTelemetry.Instrumentation.Runtime.dll",
|
||||
"lib/netstandard2.0/OpenTelemetry.Instrumentation.Runtime.xml",
|
||||
"opentelemetry-icon-color.png",
|
||||
"opentelemetry.instrumentation.runtime.1.5.1.nupkg.sha512",
|
||||
"opentelemetry.instrumentation.runtime.nuspec"
|
||||
]
|
||||
},
|
||||
"System.Diagnostics.DiagnosticSource/7.0.2": {
|
||||
"sha512": "hYr3I9N9811e0Bjf2WNwAGGyTuAFbbTgX1RPLt/3Wbm68x3IGcX5Cl75CMmgT6WlNwLQ2tCCWfqYPpypjaf2xA==",
|
||||
"type": "package",
|
||||
@@ -919,7 +949,8 @@
|
||||
"OpenTelemetry.Exporter.Console >= 1.6.0",
|
||||
"OpenTelemetry.Exporter.OpenTelemetryProtocol >= 1.6.0",
|
||||
"OpenTelemetry.Extensions.Hosting >= 1.6.0",
|
||||
"OpenTelemetry.Instrumentation.AspNetCore >= 1.5.1-beta.1"
|
||||
"OpenTelemetry.Instrumentation.AspNetCore >= 1.5.1-beta.1",
|
||||
"OpenTelemetry.Instrumentation.Runtime >= 1.5.1"
|
||||
]
|
||||
},
|
||||
"packageFolders": {
|
||||
@@ -974,6 +1005,10 @@
|
||||
"OpenTelemetry.Instrumentation.AspNetCore": {
|
||||
"target": "Package",
|
||||
"version": "[1.5.1-beta.1, )"
|
||||
},
|
||||
"OpenTelemetry.Instrumentation.Runtime": {
|
||||
"target": "Package",
|
||||
"version": "[1.5.1, )"
|
||||
}
|
||||
},
|
||||
"imports": [
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 2,
|
||||
"dgSpecHash": "q904JtYq1lLAiuvP7YZAtmR3LAs+M1o5PfyM0Qj3+rz7xX6AiTGIp6qCcuj7Ew3h5sJxnepofHEAg0S9PbQ4GA==",
|
||||
"dgSpecHash": "kBspCkYM82GK1DjcaFAxuFSJ5yyZDweAwZpDY3NzeL+b5AIdlzzBhqF0w41aQvigzdX60YHSP8Nwd+epadb4vQ==",
|
||||
"success": true,
|
||||
"projectFilePath": "/Users/nawazdhandala/Projects/OneUptime/oneuptime/Examples/otel-dotnet/otel-dotnet.csproj",
|
||||
"expectedPackageFiles": [
|
||||
@@ -28,6 +28,7 @@
|
||||
"/Users/nawazdhandala/.nuget/packages/opentelemetry.exporter.opentelemetryprotocol/1.6.0/opentelemetry.exporter.opentelemetryprotocol.1.6.0.nupkg.sha512",
|
||||
"/Users/nawazdhandala/.nuget/packages/opentelemetry.extensions.hosting/1.6.0/opentelemetry.extensions.hosting.1.6.0.nupkg.sha512",
|
||||
"/Users/nawazdhandala/.nuget/packages/opentelemetry.instrumentation.aspnetcore/1.5.1-beta.1/opentelemetry.instrumentation.aspnetcore.1.5.1-beta.1.nupkg.sha512",
|
||||
"/Users/nawazdhandala/.nuget/packages/opentelemetry.instrumentation.runtime/1.5.1/opentelemetry.instrumentation.runtime.1.5.1.nupkg.sha512",
|
||||
"/Users/nawazdhandala/.nuget/packages/system.diagnostics.diagnosticsource/7.0.2/system.diagnostics.diagnosticsource.7.0.2.nupkg.sha512",
|
||||
"/Users/nawazdhandala/.nuget/packages/system.memory/4.5.3/system.memory.4.5.3.nupkg.sha512",
|
||||
"/Users/nawazdhandala/.nuget/packages/system.runtime.compilerservices.unsafe/6.0.0/system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512",
|
||||
|
||||
@@ -8,3 +8,10 @@
|
||||
2.0
|
||||
2.0
|
||||
2.0
|
||||
2.0
|
||||
2.0
|
||||
2.0
|
||||
2.0
|
||||
2.0
|
||||
2.0
|
||||
2.0
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.6.0" />
|
||||
<PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.6.0" />
|
||||
<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.5.1-beta.1" />
|
||||
<PackageReference Include="OpenTelemetry.Instrumentation.Runtime" Version="1.5.1" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@@ -14,7 +14,9 @@ import OneUptimeDate from 'Common/Types/Date';
|
||||
import SpanService from 'CommonServer/Services/SpanService';
|
||||
import MetricSumService from 'CommonServer/Services/MetricSumService';
|
||||
import MetricHistogramService from 'CommonServer/Services/MetricHistogramService';
|
||||
import MetricGaugeService from 'CommonServer/Services/MetricGaugeService';
|
||||
import MetricSum from 'Model/AnalyticsModels/MetricSum';
|
||||
import MetricGauge from 'Model/AnalyticsModels/MetricGauge';
|
||||
import MetricHistogram from 'Model/AnalyticsModels/MetricHistogram';
|
||||
import LogService from 'CommonServer/Services/LogService';
|
||||
import ObjectID from 'Common/Types/ObjectID';
|
||||
@@ -152,6 +154,7 @@ router.post(
|
||||
|
||||
const dbMetricsSum: Array<MetricSum> = [];
|
||||
const dbMetricsHistogram: Array<MetricHistogram> = [];
|
||||
const dbMetricsGauge: Array<MetricGauge> = [];
|
||||
|
||||
for (const resourceMetric of resourceMetrics) {
|
||||
const scopeMetrics: JSONArray = resourceMetric[
|
||||
@@ -217,9 +220,55 @@ router.post(
|
||||
|
||||
dbMetricsSum.push(dbMetricSum);
|
||||
}
|
||||
}
|
||||
}else if (
|
||||
metric['gauge'] &&
|
||||
(metric['gauge'] as JSONObject)['dataPoints'] &&
|
||||
(
|
||||
(metric['gauge'] as JSONObject)[
|
||||
'dataPoints'
|
||||
] as JSONArray
|
||||
).length > 0
|
||||
) {
|
||||
for (const datapoint of (
|
||||
metric['gauge'] as JSONObject
|
||||
)['dataPoints'] as JSONArray) {
|
||||
const dbMetricGauge: MetricGauge = new MetricGauge();
|
||||
|
||||
if (
|
||||
dbMetricGauge.projectId =
|
||||
ObjectID.getZeroObjectID();
|
||||
dbMetricGauge.serviceId =
|
||||
ObjectID.getZeroObjectID();
|
||||
|
||||
dbMetricGauge.name = metricName;
|
||||
dbMetricGauge.description = metricDescription;
|
||||
|
||||
dbMetricGauge.startTimeUnixNano = datapoint[
|
||||
'startTimeUnixNano'
|
||||
] as number;
|
||||
dbMetricGauge.startTime =
|
||||
OneUptimeDate.fromUnixNano(
|
||||
datapoint['startTimeUnixNano'] as number
|
||||
);
|
||||
|
||||
dbMetricGauge.timeUnixNano = datapoint[
|
||||
'timeUnixNano'
|
||||
] as number;
|
||||
dbMetricGauge.time = OneUptimeDate.fromUnixNano(
|
||||
datapoint['timeUnixNano'] as number
|
||||
);
|
||||
|
||||
dbMetricGauge.value = datapoint[
|
||||
'asInt'
|
||||
] as number;
|
||||
|
||||
dbMetricGauge.attributes =
|
||||
OTelIngestService.getKeyValues(
|
||||
metric['attributes'] as JSONArray
|
||||
);
|
||||
|
||||
dbMetricsGauge.push(dbMetricGauge);
|
||||
}
|
||||
} else if (
|
||||
metric['histogram'] &&
|
||||
(metric['histogram'] as JSONObject)['dataPoints'] &&
|
||||
(
|
||||
@@ -287,6 +336,8 @@ router.post(
|
||||
|
||||
dbMetricsHistogram.push(dbMetricHistogram);
|
||||
}
|
||||
}else{
|
||||
logger.warn('Unknown metric type', metric);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -307,6 +358,13 @@ router.post(
|
||||
},
|
||||
});
|
||||
|
||||
await MetricGaugeService.createMany({
|
||||
items: dbMetricsGauge,
|
||||
props: {
|
||||
isRoot: true,
|
||||
},
|
||||
});
|
||||
|
||||
return Response.sendEmptyResponse(req, res);
|
||||
} catch (err) {
|
||||
return next(err);
|
||||
|
||||
@@ -3,12 +3,14 @@ import AnalyticsBaseModel from 'Common/AnalyticsModels/BaseModel';
|
||||
import Span from './Span';
|
||||
import MetricHistogram from './MetricHistogram';
|
||||
import MetricSum from './MetricSum';
|
||||
import MetricGauge from './MetricGauge';
|
||||
|
||||
const AnalyticsModels: Array<typeof AnalyticsBaseModel> = [
|
||||
Log,
|
||||
Span,
|
||||
MetricHistogram,
|
||||
MetricSum,
|
||||
MetricGauge,
|
||||
];
|
||||
|
||||
export default AnalyticsModels;
|
||||
|
||||
184
Model/AnalyticsModels/MetricGauge.ts
Normal file
184
Model/AnalyticsModels/MetricGauge.ts
Normal file
@@ -0,0 +1,184 @@
|
||||
import AnalyticsBaseModel from 'Common/AnalyticsModels/BaseModel';
|
||||
import AnalyticsTableColumn from 'Common/Types/AnalyticsDatabase/TableColumn';
|
||||
import TableColumnType from 'Common/Types/AnalyticsDatabase/TableColumnType';
|
||||
import AnalyticsTableEngine from 'Common/Types/AnalyticsDatabase/AnalyticsTableEngine';
|
||||
import ObjectID from 'Common/Types/ObjectID';
|
||||
import KeyValueNestedModel from './NestedModels/KeyValueNestedModel';
|
||||
|
||||
export default class Metric extends AnalyticsBaseModel {
|
||||
public constructor() {
|
||||
super({
|
||||
tableName: 'MetricGauge',
|
||||
tableEngine: AnalyticsTableEngine.MergeTree,
|
||||
singularName: 'Metric Gauge',
|
||||
pluralName: 'Metrics Gauge',
|
||||
tableColumns: [
|
||||
new AnalyticsTableColumn({
|
||||
key: 'projectId',
|
||||
title: 'Project ID',
|
||||
description: 'ID of project',
|
||||
required: true,
|
||||
type: TableColumnType.ObjectID,
|
||||
}),
|
||||
|
||||
new AnalyticsTableColumn({
|
||||
key: 'serviceId',
|
||||
title: 'Service ID',
|
||||
description: 'ID of the Service which created the log',
|
||||
required: true,
|
||||
type: TableColumnType.ObjectID,
|
||||
}),
|
||||
|
||||
// add name and description
|
||||
|
||||
new AnalyticsTableColumn({
|
||||
key: 'name',
|
||||
title: 'Name',
|
||||
description: 'Name of the Metric',
|
||||
required: false,
|
||||
type: TableColumnType.Text,
|
||||
}),
|
||||
|
||||
new AnalyticsTableColumn({
|
||||
key: 'description',
|
||||
title: 'Description',
|
||||
description: 'Description of the Metric',
|
||||
required: false,
|
||||
type: TableColumnType.Text,
|
||||
}),
|
||||
|
||||
new AnalyticsTableColumn({
|
||||
key: 'time',
|
||||
title: 'Time',
|
||||
description: 'When did the Metric happen?',
|
||||
required: true,
|
||||
type: TableColumnType.Date,
|
||||
}),
|
||||
|
||||
new AnalyticsTableColumn({
|
||||
key: 'startTime',
|
||||
title: 'Start Time',
|
||||
description: 'When did the Metric happen?',
|
||||
required: false,
|
||||
type: TableColumnType.Date,
|
||||
}),
|
||||
|
||||
new AnalyticsTableColumn({
|
||||
key: 'timeUnixNano',
|
||||
title: 'Time (in Unix Nano)',
|
||||
description: 'When did the Metric happen?',
|
||||
required: false,
|
||||
type: TableColumnType.LongNumber,
|
||||
}),
|
||||
|
||||
new AnalyticsTableColumn({
|
||||
key: 'startTimeUnixNano',
|
||||
title: 'Start Time (in Unix Nano)',
|
||||
description: 'When did the Metric happen?',
|
||||
required: true,
|
||||
type: TableColumnType.LongNumber,
|
||||
}),
|
||||
|
||||
new AnalyticsTableColumn({
|
||||
key: 'attributes',
|
||||
title: 'Attributes',
|
||||
description: 'Attributes',
|
||||
required: false,
|
||||
type: TableColumnType.NestedModel,
|
||||
nestedModel: new KeyValueNestedModel(),
|
||||
}),
|
||||
|
||||
new AnalyticsTableColumn({
|
||||
key: 'value',
|
||||
title: 'Value',
|
||||
description: 'Value',
|
||||
required: false,
|
||||
type: TableColumnType.Number,
|
||||
}),
|
||||
],
|
||||
primaryKeys: ['projectId', 'serviceId', 'time'],
|
||||
});
|
||||
}
|
||||
|
||||
public get projectId(): ObjectID | undefined {
|
||||
return this.getColumnValue('projectId') as ObjectID | undefined;
|
||||
}
|
||||
|
||||
public set projectId(v: ObjectID | undefined) {
|
||||
this.setColumnValue('projectId', v);
|
||||
}
|
||||
|
||||
public get serviceId(): ObjectID | undefined {
|
||||
return this.getColumnValue('serviceId') as ObjectID | undefined;
|
||||
}
|
||||
|
||||
public set serviceId(v: ObjectID | undefined) {
|
||||
this.setColumnValue('serviceId', v);
|
||||
}
|
||||
|
||||
public get time(): Date | undefined {
|
||||
return this.getColumnValue('time') as Date | undefined;
|
||||
}
|
||||
|
||||
public set time(v: Date | undefined) {
|
||||
this.setColumnValue('time', v);
|
||||
}
|
||||
|
||||
public get name(): string | undefined {
|
||||
return this.getColumnValue('name') as string | undefined;
|
||||
}
|
||||
|
||||
public set name(v: string | undefined) {
|
||||
this.setColumnValue('name', v);
|
||||
}
|
||||
|
||||
public get description(): string | undefined {
|
||||
return this.getColumnValue('description') as string | undefined;
|
||||
}
|
||||
|
||||
public set description(v: string | undefined) {
|
||||
this.setColumnValue('description', v);
|
||||
}
|
||||
|
||||
public get attributes(): Array<KeyValueNestedModel> | undefined {
|
||||
return this.getColumnValue('attributes') as
|
||||
| Array<KeyValueNestedModel>
|
||||
| undefined;
|
||||
}
|
||||
|
||||
public set attributes(v: Array<KeyValueNestedModel> | undefined) {
|
||||
this.setColumnValue('attributes', v);
|
||||
}
|
||||
|
||||
public get value(): number | undefined {
|
||||
return this.getColumnValue('value') as number | undefined;
|
||||
}
|
||||
|
||||
public set value(v: number | undefined) {
|
||||
this.setColumnValue('value', v);
|
||||
}
|
||||
|
||||
public get startTime(): Date | undefined {
|
||||
return this.getColumnValue('startTime') as Date | undefined;
|
||||
}
|
||||
|
||||
public set startTime(v: Date | undefined) {
|
||||
this.setColumnValue('startTime', v);
|
||||
}
|
||||
|
||||
public get startTimeUnixNano(): number | undefined {
|
||||
return this.getColumnValue('startTimeUnixNano') as number | undefined;
|
||||
}
|
||||
|
||||
public set startTimeUnixNano(v: number | undefined) {
|
||||
this.setColumnValue('startTimeUnixNano', v);
|
||||
}
|
||||
|
||||
public get timeUnixNano(): number | undefined {
|
||||
return this.getColumnValue('timeUnixNano') as number | undefined;
|
||||
}
|
||||
|
||||
public set timeUnixNano(v: number | undefined) {
|
||||
this.setColumnValue('timeUnixNano', v);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user