Files
signoz/frontend/src/lib/newQueryBuilder/transformQueryBuilderDataModel.ts
Naman Verma 670677bae2 feat: add ai builder query plugin kind (#12833)
<!--A few plain bullets saying what changed and why, for a reviewer
skimming it - not a wall of text, not a restatement of the diff, not
generated boilerplate.-->
#### Description

Adds a new query plugin kind `signoz/AIBuilderQuery`. Its corresponding
spec is equivalent to `qb.QueryBuilderQuery[qb.TraceAggregation]`

<!--Reference issues using `Closes #issue-number` to enable automatic
closure on merge. -->
#### Issues closed by this PR

Closes https://github.com/SigNoz/pulse-pod/issues/334

#### Screenshots / Screen Recordings




https://github.com/user-attachments/assets/3388abc1-f079-464c-b660-7b65ef54cb68



<!--Anything reviewers should keep in mind while reviewing -->

#### Additional Information

Will need to build UI changes on top of this

<!--Please delete paragraphs that you did not use before submitting.-->

---------

Co-authored-by: Gaurav Tewari <gauravtewari111@gmail.com>
Co-authored-by: Gaurav Tewari <tewarig@users.noreply.github.com>
2026-10-13 11:05:23 +00:00

54 lines
1.6 KiB
TypeScript

import {
initialFormulaBuilderFormValues,
initialQueryBuilderFormValuesMap,
} from 'constants/queryBuilder';
import { FORMULA_REGEXP, TRACE_OPERATOR_REGEXP } from 'constants/regExp';
import {
BuilderQueryDataResourse,
IBuilderFormula,
IBuilderQuery,
IBuilderTraceOperator,
} from 'types/api/queryBuilder/queryBuilderData';
import { QueryBuilderData } from 'types/common/queryBuilder';
export const transformQueryBuilderDataModel = (
data: BuilderQueryDataResourse,
queryTypes?: Record<
string,
| 'builder_query'
| 'builder_ai_query'
| 'builder_formula'
| 'builder_trace_operator'
>,
): QueryBuilderData => {
const queryData: QueryBuilderData['queryData'] = [];
const queryFormulas: QueryBuilderData['queryFormulas'] = [];
const queryTraceOperator: QueryBuilderData['queryTraceOperator'] = [];
Object.entries(data).forEach(([key, value]) => {
const isFormula = queryTypes
? queryTypes[key] === 'builder_formula'
: FORMULA_REGEXP.test(value.queryName);
const isTraceOperator = queryTypes
? queryTypes[key] === 'builder_trace_operator'
: TRACE_OPERATOR_REGEXP.test(value.queryName);
if (isFormula) {
const formula = value as IBuilderFormula;
queryFormulas.push({ ...initialFormulaBuilderFormValues, ...formula });
} else if (isTraceOperator) {
const traceOperator = value as IBuilderTraceOperator;
queryTraceOperator.push({ ...traceOperator });
} else {
const queryFromData = value as IBuilderQuery;
queryData.push({
...initialQueryBuilderFormValuesMap.metrics,
...queryFromData,
});
}
});
return { queryData, queryFormulas, queryTraceOperator };
};