feat: refactor table names in analytics models to use AnalyticsTableName enum

This commit is contained in:
Nawaz Dhandala
2026-03-16 12:43:55 +00:00
parent d327edb165
commit 5f660bae02
9 changed files with 27 additions and 11 deletions

View File

@@ -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({

View File

@@ -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",

View File

@@ -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: {

View File

@@ -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",

View File

@@ -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: {

View File

@@ -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",

View File

@@ -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<string> = new Set([
"severityText",
"serviceId",

View File

@@ -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),

View File

@@ -0,0 +1,9 @@
enum AnalyticsTableName {
Log = "LogItemV2",
Metric = "MetricItemV2",
ExceptionInstance = "ExceptionItemV2",
Span = "SpanItemV2",
MonitorLog = "MonitorLogV2",
}
export default AnalyticsTableName;