import { OPERATORS } from 'constants/queryBuilder'; import { BaseAutocompleteData, DataTypes, } from 'types/api/queryBuilder/queryAutocompleteResponse'; import { TagFilterItem } from 'types/api/queryBuilder/queryBuilderData'; import { DataSource, MetricAggregateOperator, QueryBuilderData, } from 'types/common/queryBuilder'; import { FORMULA, MetricsType, WidgetKeys } from '../constant'; import { DatabaseCallProps, DatabaseCallsRPSProps } from '../types'; import { getQueryBuilderQueries, getQueryBuilderQuerieswithFormula, } from './MetricsPageQueriesFactory'; export const databaseCallsRPS = ({ servicename, legend, tagFilterItems, dotMetricsEnabled, }: DatabaseCallsRPSProps): QueryBuilderData => { const autocompleteData: BaseAutocompleteData[] = [ { key: WidgetKeys.SignozDBLatencyCount, dataType: DataTypes.Float64, isColumn: true, type: '', }, ]; const groupBy: BaseAutocompleteData[] = [ { dataType: DataTypes.String, isColumn: false, key: dotMetricsEnabled ? WidgetKeys.Db_system : WidgetKeys.Db_system_norm, type: 'tag', }, ]; const filterItems: TagFilterItem[][] = [ [ { id: '', key: { key: dotMetricsEnabled ? WidgetKeys.Service_name : WidgetKeys.Service_name_norm, dataType: DataTypes.String, isColumn: false, type: MetricsType.Resource, }, op: OPERATORS.IN, value: [`${servicename}`], }, ...tagFilterItems, ], ]; const legends = [legend]; const dataSource = DataSource.METRICS; const timeAggregateOperators = [MetricAggregateOperator.RATE]; const spaceAggregateOperators = [MetricAggregateOperator.SUM]; return getQueryBuilderQueries({ autocompleteData, groupBy, legends, filterItems, dataSource, timeAggregateOperators, spaceAggregateOperators, }); }; export const databaseCallsAvgDuration = ({ servicename, tagFilterItems, dotMetricsEnabled, }: DatabaseCallProps): QueryBuilderData => { const autocompleteDataA: BaseAutocompleteData = { key: WidgetKeys.SignozDbLatencySum, dataType: DataTypes.Float64, isColumn: true, type: '', }; const autocompleteDataB: BaseAutocompleteData = { key: WidgetKeys.SignozDBLatencyCount, dataType: DataTypes.Float64, isColumn: true, type: '', }; const additionalItemsA: TagFilterItem[] = [ { id: '', key: { key: dotMetricsEnabled ? WidgetKeys.Service_name : WidgetKeys.Service_name_norm, dataType: DataTypes.String, isColumn: false, type: MetricsType.Resource, }, op: OPERATORS.IN, value: [servicename], }, ...tagFilterItems, ]; const autocompleteData: BaseAutocompleteData[] = [ autocompleteDataA, autocompleteDataB, ]; const additionalItems: TagFilterItem[][] = [ additionalItemsA, additionalItemsA, ]; const legends = ['', '']; const disabled = [true, true]; const legendFormulas = ['Average Duration']; const expressions = [FORMULA.DATABASE_CALLS_AVG_DURATION]; const timeAggregateOperators = [ MetricAggregateOperator.RATE, MetricAggregateOperator.RATE, ]; const spaceAggregateOperators = [ MetricAggregateOperator.SUM, MetricAggregateOperator.SUM, ]; const dataSource = DataSource.METRICS; return getQueryBuilderQuerieswithFormula({ autocompleteData, additionalItems, legends, disabled, expressions, legendFormulas, timeAggregateOperators, spaceAggregateOperators, dataSource, }); };