Priyanka Chakraborty 5a81557df7
1374 dbcalls querybuilder (#1608)
* refactor: dbcalls-fromPromql-querybuilder


Co-authored-by: Pranay Prateek <pranay@signoz.io>
Co-authored-by: Ankit Nayan <ankit@signoz.io>
2022-12-06 16:52:20 +05:30

207 lines
3.4 KiB
TypeScript

import {
IMetricsBuilderFormula,
IMetricsBuilderQuery,
IQueryBuilderTagFilterItems,
} from 'types/api/dashboard/getAll';
import { ExternalCallProps } from './ExternalQueries';
export const getQueryBuilderQueries = ({
metricName,
groupBy,
servicename,
legend,
tagFilterItems,
}: BuilderQueriesProps): {
formulas: IMetricsBuilderFormula[];
queryBuilder: IMetricsBuilderQuery[];
} => ({
formulas: [],
queryBuilder: [
{
aggregateOperator: 18,
disabled: false,
groupBy,
legend,
metricName,
name: 'A',
reduceTo: 1,
tagFilters: {
items: [
{
id: '',
key: 'service_name',
op: 'IN',
value: [`${servicename}`],
},
...tagFilterItems,
],
op: 'AND',
},
},
],
});
export const getQueryBuilderQuerieswithFormula = ({
servicename,
legend,
disabled,
tagFilterItems,
metricNameA,
metricNameB,
groupBy,
expression,
legendFormula,
}: BuilderQuerieswithFormulaProps): {
formulas: IMetricsBuilderFormula[];
queryBuilder: IMetricsBuilderQuery[];
} => {
return {
formulas: [
{
disabled: false,
expression,
name: 'F1',
legend: legendFormula,
},
],
queryBuilder: [
{
aggregateOperator: 18,
disabled,
groupBy,
legend,
metricName: metricNameA,
name: 'A',
reduceTo: 1,
tagFilters: {
items: [
{
id: '',
key: 'service_name',
op: 'IN',
value: [`${servicename}`],
},
...tagFilterItems,
],
op: 'AND',
},
},
{
aggregateOperator: 18,
disabled,
groupBy,
legend,
metricName: metricNameB,
name: 'B',
reduceTo: 1,
tagFilters: {
items: [
{
id: '',
key: 'service_name',
op: 'IN',
value: [`${servicename}`],
},
...tagFilterItems,
],
op: 'AND',
},
},
],
};
};
export const getQueryBuilderQuerieswithAdditionalItems = ({
servicename,
legend,
disabled,
tagFilterItems,
metricNameA,
metricNameB,
groupBy,
expression,
legendFormula,
additionalItems,
}: BuilderQuerieswithAdditionalItems): {
formulas: IMetricsBuilderFormula[];
queryBuilder: IMetricsBuilderQuery[];
} => ({
formulas: [
{
disabled: false,
expression,
name: 'F1',
legend: legendFormula,
},
],
queryBuilder: [
{
aggregateOperator: 18,
disabled,
groupBy,
legend,
metricName: metricNameA,
name: 'A',
reduceTo: 1,
tagFilters: {
items: [
{
id: '',
key: 'service_name',
op: 'IN',
value: [`${servicename}`],
},
additionalItems,
...tagFilterItems,
],
op: 'AND',
},
},
{
aggregateOperator: 18,
disabled,
groupBy,
legend,
metricName: metricNameB,
name: 'B',
reduceTo: 1,
tagFilters: {
items: [
{
id: '',
key: 'service_name',
op: 'IN',
value: [`${servicename}`],
},
...tagFilterItems,
],
op: 'AND',
},
},
],
});
interface BuilderQueriesProps extends ExternalCallProps {
metricName: string;
groupBy?: string[];
legend: string;
}
interface BuilderQuerieswithFormulaProps extends ExternalCallProps {
metricNameA: string;
metricNameB: string;
legend: string;
disabled: boolean;
groupBy?: string[];
expression: string;
legendFormula: string;
}
interface BuilderQuerieswithAdditionalItems
extends BuilderQuerieswithFormulaProps {
additionalItems: IQueryBuilderTagFilterItems;
}