signoz/frontend/src/utils/convertNewToOldQueryBuilder.ts

74 lines
1.9 KiB
TypeScript
Raw Normal View History

2025-07-31 12:16:55 +05:30
import {
IBuilderFormula,
IBuilderQuery,
} from 'types/api/queryBuilder/queryBuilderData';
import { BuilderQuery, QueryBuilderFormula } from 'types/api/v5/queryRange';
import { DataSource } from 'types/common/queryBuilder';
// Helper functions
const getDataSourceFromSignal = (signal: string): DataSource => {
switch (signal) {
case 'metrics':
return DataSource.METRICS;
case 'logs':
return DataSource.LOGS;
case 'traces':
return DataSource.TRACES;
default:
return DataSource.METRICS;
}
};
/**
* Converts new BuilderQuery to old IBuilderQuery
*/
export const convertBuilderQueryToIBuilderQuery = (
builderQuery: BuilderQuery,
): IBuilderQuery => {
// Determine data source based on signal
const dataSource = getDataSourceFromSignal(builderQuery.signal);
const result: IBuilderQuery = ({
...builderQuery,
fixes: includes fixes required in the new QB (#8675) * fix: removed unused code for querycontext (#8674) * Update frontend/src/utils/queryValidationUtils.ts Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> * feat: added tooltips in metric aggregations * feat: enabled legend enhancement for explorer pages and alert page * feat: updated the error state in explorer pages with new APIError * fix: cloned panel query shows previous query (#8681) * fix: cloned panel query shows previous query * chore: removed comments * chore: added null check * fix: added fix for auto run query in dashboard panel + trace view issue --------- Co-authored-by: Abhi Kumar <abhikumar@Mac.lan> * feat: added new SubstituteVars api and enable v5 for creating new alerts (#8683) * feat: added new SubstituteVars api and enable v5 for creating new alerts * feat: add warning notification for query response * feat: fixed failing test case * fix: metric histogram UI config state in edit mode * fix: fixed table columns getting duplicate data (#8685) * fix: added fix for conversion of QB function to filter expression. (#8684) * fix: added fix for QB filters for functions * chore: minor fix --------- Co-authored-by: SagarRajput-7 <162284829+SagarRajput-7@users.noreply.github.com> * feat: query builder fixes and enhancement (#8692) * feat: legend format fixes around single and multiple aggregation * feat: fixed table unit and metric units * feat: add fallbacks to columnWidth and columnUnits for old-dashboards * feat: fixed metric edit issue and having filter suggestion duplications * feat: fix and cleanup functions across product for v5 * chore: add tooltips with links to documentation (#8676) * fix: added fix for query validation and empty query error (#8694) * fix: added fix for selected columns being empty in logs explorer (#8709) * feat: added columnUnit changes for old dashboard migrations (#8706) * fix: fixed keyfetching logic (#8712) * chore: lint fix * fix: fixed logs explorer test * feat: fix type checks --------- Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> Co-authored-by: SagarRajput-7 <sagar@signoz.io> Co-authored-by: Abhi Kumar <abhikumar@Mac.lan> Co-authored-by: SagarRajput-7 <162284829+SagarRajput-7@users.noreply.github.com> Co-authored-by: Srikanth Chekuri <srikanth.chekuri92@gmail.com>
2025-08-06 00:16:20 +05:30
queryName: builderQuery.name,
2025-07-31 12:16:55 +05:30
dataSource,
legend: builderQuery.legend,
groupBy: builderQuery.groupBy?.map((group) => ({
key: group?.name,
dataType: group?.fieldDataType,
type: group?.fieldContext,
isColumn: group?.isColumn ?? true,
isJSON: group?.isJSON || false,
id: `${group?.name}--${group?.fieldDataType}--${group?.fieldContext}--${group?.isColumn}`,
})),
orderBy: builderQuery.order?.map((order) => ({
columnName: order?.key?.name,
order: order?.direction,
})),
} as unknown) as IBuilderQuery;
return result;
};
/**
* Converts new QueryBuilderFormula to old IBuilderFormula
*/
export const convertQueryBuilderFormulaToIBuilderFormula = (
formula: QueryBuilderFormula,
): IBuilderFormula => {
const result: IBuilderFormula = ({
...formula,
expression: formula.expression,
queryName: formula.name,
legend: formula.legend,
limit: formula.limit || null,
orderBy: formula.order?.map((order) => ({
columnName: order?.key?.name,
order: order?.direction,
})),
} as unknown) as IBuilderFormula;
return result;
};