mirror of
https://github.com/OneUptime/oneuptime.git
synced 2026-04-06 00:32:12 +02:00
Refactor and delete unused Metric services and models
This commit is contained in:
@@ -433,6 +433,11 @@ import SpanService, {
|
||||
SpanService as SpanServiceType,
|
||||
} from 'CommonServer/Services/SpanService';
|
||||
|
||||
import Metric from 'Model/AnalyticsModels/Metric';
|
||||
import MetricService, {
|
||||
MetricService as MetricServiceType,
|
||||
} from 'CommonServer/Services/MetricService';
|
||||
|
||||
import TelemetryUsageBilling from 'Model/Models/TelemetryUsageBilling';
|
||||
import TelemetryUsageBillingService, {
|
||||
Service as TelemetryUsageBillingServiceType,
|
||||
@@ -466,6 +471,14 @@ const BaseAPIFeatureSet: FeatureSet = {
|
||||
).getRouter()
|
||||
);
|
||||
|
||||
app.use(
|
||||
`/${APP_NAME.toLocaleLowerCase()}`,
|
||||
new BaseAnalyticsAPI<Metric, MetricServiceType>(
|
||||
Metric,
|
||||
MetricService
|
||||
).getRouter()
|
||||
);
|
||||
|
||||
app.use(
|
||||
`/${APP_NAME.toLocaleLowerCase()}`,
|
||||
new BaseAnalyticsAPI<
|
||||
|
||||
@@ -120,9 +120,7 @@ import ResellerPlanService from './ResellerPlanService';
|
||||
import PromoCodeService from './PromoCodeService';
|
||||
import LogService from './LogService';
|
||||
import SpanService from './SpanService';
|
||||
import MetricSumService from './MetricSumService';
|
||||
import MetricHistogramService from './MetricHistogramService';
|
||||
import MetricGaugeService from './MetricGaugeService';
|
||||
import MetricService from './MetricService';
|
||||
|
||||
import MonitorGroupService from './MonitorGroupService';
|
||||
import MonitorGroupResourceService from './MonitorGroupResourceService';
|
||||
@@ -271,13 +269,6 @@ const services: Array<BaseService> = [
|
||||
|
||||
export const AnalyticsServices: Array<
|
||||
AnalyticsDatabaseService<AnalyticsBaseModel>
|
||||
> = [
|
||||
LogService,
|
||||
SpanService,
|
||||
MetricSumService,
|
||||
MetricHistogramService,
|
||||
MetricGaugeService,
|
||||
MonitorMetricsByMinuteService,
|
||||
];
|
||||
> = [LogService, SpanService, MetricService, MonitorMetricsByMinuteService];
|
||||
|
||||
export default services;
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
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();
|
||||
@@ -1,11 +0,0 @@
|
||||
import MetricHistogram from 'Model/AnalyticsModels/MetricHistogram';
|
||||
import AnalyticsDatabaseService from './AnalyticsDatabaseService';
|
||||
import ClickhouseDatabase from '../Infrastructure/ClickhouseDatabase';
|
||||
|
||||
export class MetricHistogramService extends AnalyticsDatabaseService<MetricHistogram> {
|
||||
public constructor(clickhouseDatabase?: ClickhouseDatabase | undefined) {
|
||||
super({ modelType: MetricHistogram, database: clickhouseDatabase });
|
||||
}
|
||||
}
|
||||
|
||||
export default new MetricHistogramService();
|
||||
@@ -1,11 +1,11 @@
|
||||
import MetricSum from 'Model/AnalyticsModels/MetricSum';
|
||||
import MetricSum from 'Model/AnalyticsModels/Metric';
|
||||
import AnalyticsDatabaseService from './AnalyticsDatabaseService';
|
||||
import ClickhouseDatabase from '../Infrastructure/ClickhouseDatabase';
|
||||
|
||||
export class MetricSumService extends AnalyticsDatabaseService<MetricSum> {
|
||||
export class MetricService extends AnalyticsDatabaseService<MetricSum> {
|
||||
public constructor(clickhouseDatabase?: ClickhouseDatabase | undefined) {
|
||||
super({ modelType: MetricSum, database: clickhouseDatabase });
|
||||
}
|
||||
}
|
||||
|
||||
export default new MetricSumService();
|
||||
export default new MetricService();
|
||||
@@ -12,12 +12,8 @@ import Span, { SpanKind, SpanStatus } from 'Model/AnalyticsModels/Span';
|
||||
import Log, { LogSeverity } from 'Model/AnalyticsModels/Log';
|
||||
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 MetricService from 'CommonServer/Services/MetricService';
|
||||
import Metric from 'Model/AnalyticsModels/Metric';
|
||||
import LogService from 'CommonServer/Services/LogService';
|
||||
import { JSONArray, JSONObject } from 'Common/Types/JSON';
|
||||
import OTelIngestService from '../Service/OTelIngest';
|
||||
@@ -303,9 +299,7 @@ router.post(
|
||||
'resourceMetrics'
|
||||
] as JSONArray;
|
||||
|
||||
const dbMetricsSum: Array<MetricSum> = [];
|
||||
const dbMetricsHistogram: Array<MetricHistogram> = [];
|
||||
const dbMetricsGauge: Array<MetricGauge> = [];
|
||||
const dbMetrics: Array<Metric> = new Array<Metric>();
|
||||
|
||||
for (const resourceMetric of resourceMetrics) {
|
||||
const scopeMetrics: JSONArray = resourceMetric[
|
||||
@@ -335,7 +329,7 @@ router.post(
|
||||
for (const datapoint of (
|
||||
metric['sum'] as JSONObject
|
||||
)['dataPoints'] as JSONArray) {
|
||||
const dbMetricSum: MetricSum = new MetricSum();
|
||||
const dbMetricSum: Metric = new Metric();
|
||||
|
||||
dbMetricSum.projectId = (
|
||||
req as TelemetryRequest
|
||||
@@ -366,12 +360,12 @@ router.post(
|
||||
'asInt'
|
||||
] as number;
|
||||
|
||||
// dbMetricSum.attributes =
|
||||
// OTelIngestService.getAttributes(
|
||||
// metric['attributes'] as JSONArray
|
||||
// );
|
||||
dbMetricSum.attributes =
|
||||
OTelIngestService.getAttributes(
|
||||
metric['attributes'] as JSONArray
|
||||
);
|
||||
|
||||
dbMetricsSum.push(dbMetricSum);
|
||||
dbMetrics.push(dbMetricSum);
|
||||
}
|
||||
} else if (
|
||||
metric['gauge'] &&
|
||||
@@ -385,8 +379,7 @@ router.post(
|
||||
for (const datapoint of (
|
||||
metric['gauge'] as JSONObject
|
||||
)['dataPoints'] as JSONArray) {
|
||||
const dbMetricGauge: MetricGauge =
|
||||
new MetricGauge();
|
||||
const dbMetricGauge: Metric = new Metric();
|
||||
|
||||
dbMetricGauge.projectId = (
|
||||
req as TelemetryRequest
|
||||
@@ -417,12 +410,12 @@ router.post(
|
||||
'asInt'
|
||||
] as number;
|
||||
|
||||
// dbMetricGauge.attributes =
|
||||
// OTelIngestService.getKeyValues(
|
||||
// metric['attributes'] as JSONArray
|
||||
// );
|
||||
dbMetricGauge.attributes =
|
||||
OTelIngestService.getAttributes(
|
||||
metric['attributes'] as JSONArray
|
||||
);
|
||||
|
||||
dbMetricsGauge.push(dbMetricGauge);
|
||||
dbMetrics.push(dbMetricGauge);
|
||||
}
|
||||
} else if (
|
||||
metric['histogram'] &&
|
||||
@@ -436,8 +429,7 @@ router.post(
|
||||
for (const datapoint of (
|
||||
metric['histogram'] as JSONObject
|
||||
)['dataPoints'] as JSONArray) {
|
||||
const dbMetricHistogram: MetricHistogram =
|
||||
new MetricHistogram();
|
||||
const dbMetricHistogram: Metric = new Metric();
|
||||
|
||||
dbMetricHistogram.projectId = (
|
||||
req as TelemetryRequest
|
||||
@@ -492,7 +484,7 @@ router.post(
|
||||
// metric['attributes'] as JSONArray
|
||||
// );
|
||||
|
||||
dbMetricsHistogram.push(dbMetricHistogram);
|
||||
dbMetrics.push(dbMetricHistogram);
|
||||
}
|
||||
} else {
|
||||
logger.warn('Unknown metric type');
|
||||
@@ -502,22 +494,8 @@ router.post(
|
||||
}
|
||||
}
|
||||
|
||||
await MetricSumService.createMany({
|
||||
items: dbMetricsSum,
|
||||
props: {
|
||||
isRoot: true,
|
||||
},
|
||||
});
|
||||
|
||||
await MetricHistogramService.createMany({
|
||||
items: dbMetricsHistogram,
|
||||
props: {
|
||||
isRoot: true,
|
||||
},
|
||||
});
|
||||
|
||||
await MetricGaugeService.createMany({
|
||||
items: dbMetricsGauge,
|
||||
await MetricService.createMany({
|
||||
items: dbMetrics,
|
||||
props: {
|
||||
isRoot: true,
|
||||
},
|
||||
|
||||
@@ -1,17 +1,13 @@
|
||||
import Log from './Log';
|
||||
import AnalyticsBaseModel from 'Common/AnalyticsModels/BaseModel';
|
||||
import Span from './Span';
|
||||
import MetricHistogram from './MetricHistogram';
|
||||
import MetricSum from './MetricSum';
|
||||
import MetricGauge from './MetricGauge';
|
||||
import MonitorMetricsByMinute from './MonitorMetricsByMinute';
|
||||
import Metric from './Metric';
|
||||
|
||||
const AnalyticsModels: Array<typeof AnalyticsBaseModel> = [
|
||||
Log,
|
||||
Span,
|
||||
MetricHistogram,
|
||||
MetricSum,
|
||||
MetricGauge,
|
||||
Metric,
|
||||
MonitorMetricsByMinute,
|
||||
];
|
||||
|
||||
|
||||
525
Model/AnalyticsModels/Metric.ts
Normal file
525
Model/AnalyticsModels/Metric.ts
Normal file
@@ -0,0 +1,525 @@
|
||||
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 Route from 'Common/Types/API/Route';
|
||||
import Permission from 'Common/Types/Permission';
|
||||
import { JSONObject } from 'Common/Types/JSON';
|
||||
|
||||
export default class Metric extends AnalyticsBaseModel {
|
||||
public constructor() {
|
||||
super({
|
||||
tableName: 'Metric',
|
||||
tableEngine: AnalyticsTableEngine.MergeTree,
|
||||
singularName: 'Metric',
|
||||
pluralName: 'Metrics',
|
||||
crudApiPath: new Route('/metrics'),
|
||||
tableColumns: [
|
||||
new AnalyticsTableColumn({
|
||||
key: 'projectId',
|
||||
title: 'Project ID',
|
||||
description: 'ID of project',
|
||||
required: true,
|
||||
type: TableColumnType.ObjectID,
|
||||
isTenantId: true,
|
||||
accessControl: {
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanReadTelemetryServiceLog,
|
||||
],
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanCreateTelemetryServiceLog,
|
||||
],
|
||||
update: [],
|
||||
},
|
||||
}),
|
||||
|
||||
new AnalyticsTableColumn({
|
||||
key: 'serviceId',
|
||||
title: 'Service ID',
|
||||
description: 'ID of the Service which created the log',
|
||||
required: true,
|
||||
type: TableColumnType.ObjectID,
|
||||
accessControl: {
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanReadTelemetryServiceLog,
|
||||
],
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanCreateTelemetryServiceLog,
|
||||
],
|
||||
update: [],
|
||||
},
|
||||
}),
|
||||
|
||||
// add name and description
|
||||
|
||||
new AnalyticsTableColumn({
|
||||
key: 'name',
|
||||
title: 'Name',
|
||||
description: 'Name of the Metric',
|
||||
required: false,
|
||||
type: TableColumnType.Text,
|
||||
accessControl: {
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanReadTelemetryServiceLog,
|
||||
],
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanCreateTelemetryServiceLog,
|
||||
],
|
||||
update: [],
|
||||
},
|
||||
}),
|
||||
|
||||
new AnalyticsTableColumn({
|
||||
key: 'description',
|
||||
title: 'Description',
|
||||
description: 'Description of the Metric',
|
||||
required: false,
|
||||
type: TableColumnType.Text,
|
||||
accessControl: {
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanReadTelemetryServiceLog,
|
||||
],
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanCreateTelemetryServiceLog,
|
||||
],
|
||||
update: [],
|
||||
},
|
||||
}),
|
||||
|
||||
// this is end time.
|
||||
new AnalyticsTableColumn({
|
||||
key: 'time',
|
||||
title: 'Time',
|
||||
description: 'When did the Metric happen?',
|
||||
required: true,
|
||||
type: TableColumnType.Date,
|
||||
accessControl: {
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanReadTelemetryServiceLog,
|
||||
],
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanCreateTelemetryServiceLog,
|
||||
],
|
||||
update: [],
|
||||
},
|
||||
}),
|
||||
|
||||
new AnalyticsTableColumn({
|
||||
key: 'startTime',
|
||||
title: 'Start Time',
|
||||
description: 'When did the Metric happen?',
|
||||
required: false,
|
||||
type: TableColumnType.Date,
|
||||
accessControl: {
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanReadTelemetryServiceLog,
|
||||
],
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanCreateTelemetryServiceLog,
|
||||
],
|
||||
update: [],
|
||||
},
|
||||
}),
|
||||
|
||||
// end time.
|
||||
new AnalyticsTableColumn({
|
||||
key: 'timeUnixNano',
|
||||
title: 'Time (in Unix Nano)',
|
||||
description: 'When did the Metric happen?',
|
||||
required: false,
|
||||
type: TableColumnType.LongNumber,
|
||||
accessControl: {
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanReadTelemetryServiceLog,
|
||||
],
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanCreateTelemetryServiceLog,
|
||||
],
|
||||
update: [],
|
||||
},
|
||||
}),
|
||||
|
||||
new AnalyticsTableColumn({
|
||||
key: 'startTimeUnixNano',
|
||||
title: 'Start Time (in Unix Nano)',
|
||||
description: 'When did the Metric happen?',
|
||||
required: false,
|
||||
type: TableColumnType.LongNumber,
|
||||
accessControl: {
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanReadTelemetryServiceLog,
|
||||
],
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanCreateTelemetryServiceLog,
|
||||
],
|
||||
update: [],
|
||||
},
|
||||
}),
|
||||
|
||||
new AnalyticsTableColumn({
|
||||
key: 'attributes',
|
||||
title: 'Attributes',
|
||||
description: 'Attributes',
|
||||
required: false,
|
||||
type: TableColumnType.JSON,
|
||||
accessControl: {
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanReadTelemetryServiceLog,
|
||||
],
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanCreateTelemetryServiceLog,
|
||||
],
|
||||
update: [],
|
||||
},
|
||||
}),
|
||||
|
||||
new AnalyticsTableColumn({
|
||||
key: 'count',
|
||||
title: 'Count',
|
||||
description: 'Count',
|
||||
required: false,
|
||||
type: TableColumnType.Number,
|
||||
accessControl: {
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanReadTelemetryServiceLog,
|
||||
],
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanCreateTelemetryServiceLog,
|
||||
],
|
||||
update: [],
|
||||
},
|
||||
}),
|
||||
|
||||
new AnalyticsTableColumn({
|
||||
key: 'sum',
|
||||
title: 'Sum',
|
||||
description: 'Sum',
|
||||
required: false,
|
||||
type: TableColumnType.Number,
|
||||
accessControl: {
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanReadTelemetryServiceLog,
|
||||
],
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanCreateTelemetryServiceLog,
|
||||
],
|
||||
update: [],
|
||||
},
|
||||
}),
|
||||
|
||||
new AnalyticsTableColumn({
|
||||
key: 'value',
|
||||
title: 'Value',
|
||||
description: 'Value',
|
||||
required: false,
|
||||
type: TableColumnType.Number,
|
||||
accessControl: {
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanReadTelemetryServiceLog,
|
||||
],
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanCreateTelemetryServiceLog,
|
||||
],
|
||||
update: [],
|
||||
},
|
||||
}),
|
||||
|
||||
new AnalyticsTableColumn({
|
||||
key: 'min',
|
||||
title: 'Min',
|
||||
description: 'Min',
|
||||
required: false,
|
||||
type: TableColumnType.Number,
|
||||
accessControl: {
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanReadTelemetryServiceLog,
|
||||
],
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanCreateTelemetryServiceLog,
|
||||
],
|
||||
update: [],
|
||||
},
|
||||
}),
|
||||
|
||||
new AnalyticsTableColumn({
|
||||
key: 'max',
|
||||
title: 'Max',
|
||||
description: 'Max',
|
||||
required: false,
|
||||
type: TableColumnType.Number,
|
||||
accessControl: {
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanReadTelemetryServiceLog,
|
||||
],
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanCreateTelemetryServiceLog,
|
||||
],
|
||||
update: [],
|
||||
},
|
||||
}),
|
||||
|
||||
new AnalyticsTableColumn({
|
||||
key: 'bucketCounts',
|
||||
title: 'Bucket Counts',
|
||||
description: 'Bucket Counts',
|
||||
required: false,
|
||||
type: TableColumnType.ArrayNumber,
|
||||
accessControl: {
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanReadTelemetryServiceLog,
|
||||
],
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanCreateTelemetryServiceLog,
|
||||
],
|
||||
update: [],
|
||||
},
|
||||
}),
|
||||
|
||||
new AnalyticsTableColumn({
|
||||
key: 'explicitBounds',
|
||||
title: 'Explicit Bonds',
|
||||
description: 'Explicit Bonds',
|
||||
required: false,
|
||||
type: TableColumnType.ArrayNumber,
|
||||
accessControl: {
|
||||
read: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanReadTelemetryServiceLog,
|
||||
],
|
||||
create: [
|
||||
Permission.ProjectOwner,
|
||||
Permission.ProjectAdmin,
|
||||
Permission.ProjectMember,
|
||||
Permission.CanCreateTelemetryServiceLog,
|
||||
],
|
||||
update: [],
|
||||
},
|
||||
}),
|
||||
],
|
||||
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 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 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 attributes(): JSONObject | undefined {
|
||||
return this.getColumnValue('attributes') as JSONObject | undefined;
|
||||
}
|
||||
|
||||
public set attributes(v: JSONObject | undefined) {
|
||||
this.setColumnValue('attributes', 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);
|
||||
}
|
||||
|
||||
public get count(): number | undefined {
|
||||
return this.getColumnValue('count') as number | undefined;
|
||||
}
|
||||
|
||||
public set count(v: number | undefined) {
|
||||
this.setColumnValue('count', v);
|
||||
}
|
||||
|
||||
public get sum(): number | undefined {
|
||||
return this.getColumnValue('sum') as number | undefined;
|
||||
}
|
||||
|
||||
public set sum(v: number | undefined) {
|
||||
this.setColumnValue('sum', 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 min(): number | undefined {
|
||||
return this.getColumnValue('min') as number | undefined;
|
||||
}
|
||||
|
||||
public set min(v: number | undefined) {
|
||||
this.setColumnValue('min', v);
|
||||
}
|
||||
|
||||
public get max(): number | undefined {
|
||||
return this.getColumnValue('max') as number | undefined;
|
||||
}
|
||||
|
||||
public set max(v: number | undefined) {
|
||||
this.setColumnValue('max', v);
|
||||
}
|
||||
|
||||
public get bucketCounts(): Array<number> | undefined {
|
||||
return this.getColumnValue('bucketCounts') as Array<number> | undefined;
|
||||
}
|
||||
|
||||
public set bucketCounts(v: Array<number> | undefined) {
|
||||
this.setColumnValue('bucketCounts', v);
|
||||
}
|
||||
|
||||
public get explicitBounds(): Array<number> | undefined {
|
||||
return this.getColumnValue('explicitBounds') as
|
||||
| Array<number>
|
||||
| undefined;
|
||||
}
|
||||
|
||||
public set explicitBounds(v: Array<number> | undefined) {
|
||||
this.setColumnValue('explicitBounds', v);
|
||||
}
|
||||
}
|
||||
@@ -1,187 +0,0 @@
|
||||
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';
|
||||
import Route from 'Common/Types/API/Route';
|
||||
|
||||
export default class Metric extends AnalyticsBaseModel {
|
||||
public constructor() {
|
||||
super({
|
||||
tableName: 'MetricGauge',
|
||||
tableEngine: AnalyticsTableEngine.MergeTree,
|
||||
singularName: 'Metric Gauge',
|
||||
crudApiPath: new Route('/metrics/gauge'),
|
||||
pluralName: 'Metrics Gauge',
|
||||
tableColumns: [
|
||||
new AnalyticsTableColumn({
|
||||
key: 'projectId',
|
||||
title: 'Project ID',
|
||||
description: 'ID of project',
|
||||
required: true,
|
||||
type: TableColumnType.ObjectID,
|
||||
isTenantId: true,
|
||||
}),
|
||||
|
||||
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,
|
||||
nestedModelType: 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);
|
||||
}
|
||||
}
|
||||
@@ -1,269 +0,0 @@
|
||||
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';
|
||||
import Route from 'Common/Types/API/Route';
|
||||
|
||||
export default class Metric extends AnalyticsBaseModel {
|
||||
public constructor() {
|
||||
super({
|
||||
tableName: 'MetricHistogram',
|
||||
tableEngine: AnalyticsTableEngine.MergeTree,
|
||||
singularName: 'Metric Histogram',
|
||||
pluralName: 'Metrics Histogram',
|
||||
crudApiPath: new Route('/metrics/histogram'),
|
||||
tableColumns: [
|
||||
new AnalyticsTableColumn({
|
||||
key: 'projectId',
|
||||
title: 'Project ID',
|
||||
description: 'ID of project',
|
||||
required: true,
|
||||
type: TableColumnType.ObjectID,
|
||||
isTenantId: true,
|
||||
}),
|
||||
|
||||
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: false,
|
||||
type: TableColumnType.LongNumber,
|
||||
}),
|
||||
|
||||
new AnalyticsTableColumn({
|
||||
key: 'attributes',
|
||||
title: 'Attributes',
|
||||
description: 'Attributes',
|
||||
required: false,
|
||||
type: TableColumnType.NestedModel,
|
||||
nestedModelType: KeyValueNestedModel,
|
||||
}),
|
||||
|
||||
new AnalyticsTableColumn({
|
||||
key: 'count',
|
||||
title: 'Count',
|
||||
description: 'Count',
|
||||
required: false,
|
||||
type: TableColumnType.Number,
|
||||
}),
|
||||
|
||||
new AnalyticsTableColumn({
|
||||
key: 'sum',
|
||||
title: 'Sum',
|
||||
description: 'Sum',
|
||||
required: false,
|
||||
type: TableColumnType.Number,
|
||||
}),
|
||||
|
||||
new AnalyticsTableColumn({
|
||||
key: 'min',
|
||||
title: 'Min',
|
||||
description: 'Min',
|
||||
required: false,
|
||||
type: TableColumnType.Number,
|
||||
}),
|
||||
|
||||
new AnalyticsTableColumn({
|
||||
key: 'max',
|
||||
title: 'Max',
|
||||
description: 'Max',
|
||||
required: false,
|
||||
type: TableColumnType.Number,
|
||||
}),
|
||||
|
||||
new AnalyticsTableColumn({
|
||||
key: 'bucketCounts',
|
||||
title: 'Bucket Counts',
|
||||
description: 'Bucket Counts',
|
||||
required: false,
|
||||
type: TableColumnType.ArrayNumber,
|
||||
}),
|
||||
|
||||
new AnalyticsTableColumn({
|
||||
key: 'explicitBounds',
|
||||
title: 'Explicit Bonds',
|
||||
description: 'Explicit Bonds',
|
||||
required: false,
|
||||
type: TableColumnType.ArrayNumber,
|
||||
}),
|
||||
],
|
||||
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 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 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 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 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);
|
||||
}
|
||||
|
||||
public get count(): number | undefined {
|
||||
return this.getColumnValue('count') as number | undefined;
|
||||
}
|
||||
|
||||
public set count(v: number | undefined) {
|
||||
this.setColumnValue('count', v);
|
||||
}
|
||||
|
||||
public get sum(): number | undefined {
|
||||
return this.getColumnValue('sum') as number | undefined;
|
||||
}
|
||||
|
||||
public set sum(v: number | undefined) {
|
||||
this.setColumnValue('sum', v);
|
||||
}
|
||||
|
||||
public get min(): number | undefined {
|
||||
return this.getColumnValue('min') as number | undefined;
|
||||
}
|
||||
|
||||
public set min(v: number | undefined) {
|
||||
this.setColumnValue('min', v);
|
||||
}
|
||||
|
||||
public get max(): number | undefined {
|
||||
return this.getColumnValue('max') as number | undefined;
|
||||
}
|
||||
|
||||
public set max(v: number | undefined) {
|
||||
this.setColumnValue('max', v);
|
||||
}
|
||||
|
||||
public get bucketCounts(): Array<number> | undefined {
|
||||
return this.getColumnValue('bucketCounts') as Array<number> | undefined;
|
||||
}
|
||||
|
||||
public set bucketCounts(v: Array<number> | undefined) {
|
||||
this.setColumnValue('bucketCounts', v);
|
||||
}
|
||||
|
||||
public get explicitBounds(): Array<number> | undefined {
|
||||
return this.getColumnValue('explicitBounds') as
|
||||
| Array<number>
|
||||
| undefined;
|
||||
}
|
||||
|
||||
public set explicitBounds(v: Array<number> | undefined) {
|
||||
this.setColumnValue('explicitBounds', v);
|
||||
}
|
||||
}
|
||||
@@ -1,187 +0,0 @@
|
||||
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';
|
||||
import Route from 'Common/Types/API/Route';
|
||||
|
||||
export default class Metric extends AnalyticsBaseModel {
|
||||
public constructor() {
|
||||
super({
|
||||
tableName: 'MetricSum',
|
||||
tableEngine: AnalyticsTableEngine.MergeTree,
|
||||
singularName: 'Metric Sum',
|
||||
crudApiPath: new Route('/metrics/sum'),
|
||||
pluralName: 'Metrics Sum',
|
||||
tableColumns: [
|
||||
new AnalyticsTableColumn({
|
||||
key: 'projectId',
|
||||
title: 'Project ID',
|
||||
description: 'ID of project',
|
||||
required: true,
|
||||
type: TableColumnType.ObjectID,
|
||||
isTenantId: true,
|
||||
}),
|
||||
|
||||
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,
|
||||
nestedModelType: 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);
|
||||
}
|
||||
}
|
||||
@@ -14,6 +14,8 @@ services:
|
||||
|
||||
|
||||
redis:
|
||||
ports:
|
||||
- '6310:6379'
|
||||
extends:
|
||||
file: ./docker-compose.base.yml
|
||||
service: redis
|
||||
|
||||
Reference in New Issue
Block a user