From 5f660bae02f08aeaa0853ab7c55519f1206d2f87 Mon Sep 17 00:00:00 2001 From: Nawaz Dhandala Date: Mon, 16 Mar 2026 12:43:55 +0000 Subject: [PATCH] feat: refactor table names in analytics models to use AnalyticsTableName enum --- CLI/Tests/SelectFieldGenerator.test.ts | 6 +++--- Common/Models/AnalyticsModels/ExceptionInstance.ts | 3 ++- Common/Models/AnalyticsModels/Log.ts | 3 ++- Common/Models/AnalyticsModels/Metric.ts | 3 ++- Common/Models/AnalyticsModels/MonitorLog.ts | 3 ++- Common/Models/AnalyticsModels/Span.ts | 3 ++- Common/Server/Services/LogAggregationService.ts | 3 ++- .../Tests/Server/Services/LogAggregationService.test.ts | 5 +++-- Common/Types/AnalyticsDatabase/AnalyticsTableName.ts | 9 +++++++++ 9 files changed, 27 insertions(+), 11 deletions(-) create mode 100644 Common/Types/AnalyticsDatabase/AnalyticsTableName.ts diff --git a/CLI/Tests/SelectFieldGenerator.test.ts b/CLI/Tests/SelectFieldGenerator.test.ts index a6cbd5df62..26f645423a 100644 --- a/CLI/Tests/SelectFieldGenerator.test.ts +++ b/CLI/Tests/SelectFieldGenerator.test.ts @@ -1,4 +1,5 @@ import { generateAllFieldsSelect } from "../Utils/SelectFieldGenerator"; +import AnalyticsTableName from "Common/Types/AnalyticsDatabase/AnalyticsTableName"; import { JSONObject } from "Common/Types/JSON"; describe("SelectFieldGenerator", () => { @@ -47,10 +48,9 @@ describe("SelectFieldGenerator", () => { }); describe("analytics models", () => { - it("should return default select for known analytics model (LogItem)", () => { - // The Log analytics model has tableName "LogItem" + it("should return default select for known analytics model (Log)", () => { const select: JSONObject = generateAllFieldsSelect( - "LogItem", + AnalyticsTableName.Log, "analytics", ); expect(select).toEqual({ diff --git a/Common/Models/AnalyticsModels/ExceptionInstance.ts b/Common/Models/AnalyticsModels/ExceptionInstance.ts index 2d90f69fe3..547b14ebcc 100644 --- a/Common/Models/AnalyticsModels/ExceptionInstance.ts +++ b/Common/Models/AnalyticsModels/ExceptionInstance.ts @@ -1,6 +1,7 @@ import AnalyticsBaseModel from "./AnalyticsBaseModel/AnalyticsBaseModel"; import Route from "../../Types/API/Route"; import AnalyticsTableEngine from "../../Types/AnalyticsDatabase/AnalyticsTableEngine"; +import AnalyticsTableName from "../../Types/AnalyticsDatabase/AnalyticsTableName"; import AnalyticsTableColumn, { SkipIndexType, } from "../../Types/AnalyticsDatabase/TableColumn"; @@ -469,7 +470,7 @@ export default class ExceptionInstance extends AnalyticsBaseModel { }); super({ - tableName: "ExceptionItemV2", + tableName: AnalyticsTableName.ExceptionInstance, tableEngine: AnalyticsTableEngine.MergeTree, singularName: "Exception Instance", pluralName: "Exception Instances", diff --git a/Common/Models/AnalyticsModels/Log.ts b/Common/Models/AnalyticsModels/Log.ts index 7af0f69cd0..c1cc800962 100644 --- a/Common/Models/AnalyticsModels/Log.ts +++ b/Common/Models/AnalyticsModels/Log.ts @@ -1,6 +1,7 @@ import AnalyticsBaseModel from "./AnalyticsBaseModel/AnalyticsBaseModel"; import Route from "../../Types/API/Route"; import AnalyticsTableEngine from "../../Types/AnalyticsDatabase/AnalyticsTableEngine"; +import AnalyticsTableName from "../../Types/AnalyticsDatabase/AnalyticsTableName"; import AnalyticsTableColumn, { SkipIndexType, } from "../../Types/AnalyticsDatabase/TableColumn"; @@ -381,7 +382,7 @@ export default class Log extends AnalyticsBaseModel { }); super({ - tableName: "LogItemV2", + tableName: AnalyticsTableName.Log, tableEngine: AnalyticsTableEngine.MergeTree, singularName: "Log", accessControl: { diff --git a/Common/Models/AnalyticsModels/Metric.ts b/Common/Models/AnalyticsModels/Metric.ts index 3150835575..6825d37178 100644 --- a/Common/Models/AnalyticsModels/Metric.ts +++ b/Common/Models/AnalyticsModels/Metric.ts @@ -1,6 +1,7 @@ import AnalyticsBaseModel from "./AnalyticsBaseModel/AnalyticsBaseModel"; import Route from "../../Types/API/Route"; import AnalyticsTableEngine from "../../Types/AnalyticsDatabase/AnalyticsTableEngine"; +import AnalyticsTableName from "../../Types/AnalyticsDatabase/AnalyticsTableName"; import AnalyticsTableColumn, { SkipIndexType, } from "../../Types/AnalyticsDatabase/TableColumn"; @@ -534,7 +535,7 @@ export default class Metric extends AnalyticsBaseModel { }); super({ - tableName: "MetricItemV2", + tableName: AnalyticsTableName.Metric, tableEngine: AnalyticsTableEngine.MergeTree, singularName: "Metric", pluralName: "Metrics", diff --git a/Common/Models/AnalyticsModels/MonitorLog.ts b/Common/Models/AnalyticsModels/MonitorLog.ts index b863f8903a..528b99d034 100644 --- a/Common/Models/AnalyticsModels/MonitorLog.ts +++ b/Common/Models/AnalyticsModels/MonitorLog.ts @@ -1,6 +1,7 @@ import AnalyticsBaseModel from "./AnalyticsBaseModel/AnalyticsBaseModel"; import Route from "../../Types/API/Route"; import AnalyticsTableEngine from "../../Types/AnalyticsDatabase/AnalyticsTableEngine"; +import AnalyticsTableName from "../../Types/AnalyticsDatabase/AnalyticsTableName"; import AnalyticsTableColumn from "../../Types/AnalyticsDatabase/TableColumn"; import TableColumnType from "../../Types/AnalyticsDatabase/TableColumnType"; import { JSONObject } from "../../Types/JSON"; @@ -115,7 +116,7 @@ export default class MonitorLog extends AnalyticsBaseModel { }); super({ - tableName: "MonitorLogV2", + tableName: AnalyticsTableName.MonitorLog, tableEngine: AnalyticsTableEngine.MergeTree, singularName: "Monitor Log", accessControl: { diff --git a/Common/Models/AnalyticsModels/Span.ts b/Common/Models/AnalyticsModels/Span.ts index 0a46ea651d..173feb8051 100644 --- a/Common/Models/AnalyticsModels/Span.ts +++ b/Common/Models/AnalyticsModels/Span.ts @@ -1,6 +1,7 @@ import AnalyticsBaseModel from "./AnalyticsBaseModel/AnalyticsBaseModel"; import Route from "../../Types/API/Route"; import AnalyticsTableEngine from "../../Types/AnalyticsDatabase/AnalyticsTableEngine"; +import AnalyticsTableName from "../../Types/AnalyticsDatabase/AnalyticsTableName"; import AnalyticsTableColumn, { SkipIndexType, } from "../../Types/AnalyticsDatabase/TableColumn"; @@ -575,7 +576,7 @@ export default class Span extends AnalyticsBaseModel { }); super({ - tableName: "SpanItemV2", + tableName: AnalyticsTableName.Span, tableEngine: AnalyticsTableEngine.MergeTree, singularName: "Span", pluralName: "Spans", diff --git a/Common/Server/Services/LogAggregationService.ts b/Common/Server/Services/LogAggregationService.ts index 78097b3130..ee8df594c2 100644 --- a/Common/Server/Services/LogAggregationService.ts +++ b/Common/Server/Services/LogAggregationService.ts @@ -5,6 +5,7 @@ import { JSONObject } from "../../Types/JSON"; import ObjectID from "../../Types/ObjectID"; import BadDataException from "../../Types/Exception/BadDataException"; import Includes from "../../Types/BaseDatabase/Includes"; +import AnalyticsTableName from "../../Types/AnalyticsDatabase/AnalyticsTableName"; import CaptureSpan from "../Utils/Telemetry/CaptureSpan"; import { DbJSONResponse, Results } from "./AnalyticsDatabaseService"; @@ -82,7 +83,7 @@ export interface AnalyticsTableRow { export class LogAggregationService { private static readonly DEFAULT_FACET_LIMIT: number = 500; - private static readonly TABLE_NAME: string = "LogItem"; + private static readonly TABLE_NAME: string = AnalyticsTableName.Log; private static readonly TOP_LEVEL_COLUMNS: Set = new Set([ "severityText", "serviceId", diff --git a/Common/Tests/Server/Services/LogAggregationService.test.ts b/Common/Tests/Server/Services/LogAggregationService.test.ts index 428b985c41..eee4c087c6 100644 --- a/Common/Tests/Server/Services/LogAggregationService.test.ts +++ b/Common/Tests/Server/Services/LogAggregationService.test.ts @@ -2,6 +2,7 @@ import LogAggregationService, { FacetRequest, } from "../../../Server/Services/LogAggregationService"; import { Statement } from "../../../Server/Utils/AnalyticsDatabase/Statement"; +import AnalyticsTableName from "../../../Types/AnalyticsDatabase/AnalyticsTableName"; import ObjectID from "../../../Types/ObjectID"; import OneUptimeDate from "../../../Types/Date"; import { describe, expect, test } from "@jest/globals"; @@ -35,7 +36,7 @@ describe("LogAggregationService", () => { expect(statement.query_params).toStrictEqual({ p0: "severityText", - p1: "LogItem", + p1: AnalyticsTableName.Log, p2: defaultRequest.projectId.toString(), p3: OneUptimeDate.toClickhouseDateTime(defaultRequest.startTime), p4: OneUptimeDate.toClickhouseDateTime(defaultRequest.endTime), @@ -55,7 +56,7 @@ describe("LogAggregationService", () => { expect(statement.query_params).toStrictEqual({ p0: facetKey, - p1: "LogItem", + p1: AnalyticsTableName.Log, p2: defaultRequest.projectId.toString(), p3: OneUptimeDate.toClickhouseDateTime(defaultRequest.startTime), p4: OneUptimeDate.toClickhouseDateTime(defaultRequest.endTime), diff --git a/Common/Types/AnalyticsDatabase/AnalyticsTableName.ts b/Common/Types/AnalyticsDatabase/AnalyticsTableName.ts new file mode 100644 index 0000000000..4c43b9e4de --- /dev/null +++ b/Common/Types/AnalyticsDatabase/AnalyticsTableName.ts @@ -0,0 +1,9 @@ +enum AnalyticsTableName { + Log = "LogItemV2", + Metric = "MetricItemV2", + ExceptionInstance = "ExceptionItemV2", + Span = "SpanItemV2", + MonitorLog = "MonitorLogV2", +} + +export default AnalyticsTableName;