/** * @license Apache-2.0 * @copyright Cube Dev, Inc. * @fileoverview * Network query data types definition. */ import { CacheMode } from '@cubejs-backend/shared'; import { Member, TimeMember, FilterOperator, QueryTimeDimensionGranularity } from './strings'; import { ResultType } from './enums'; /** * Query base filter definition. */ interface QueryFilter { member: Member; operator: FilterOperator; values?: string[]; } /** * Query 'and'-filters type definition. */ type LogicalAndFilter = { and: (QueryFilter | { or: (QueryFilter | LogicalAndFilter)[]; })[]; }; /** * Query 'or'-filters type definition. */ type LogicalOrFilter = { or: (QueryFilter | LogicalAndFilter)[]; }; export type GroupingSetType = 'Rollup' | 'Cube'; type GroupingSet = { groupType: GroupingSetType; id: number; subId?: null | number; }; export type EvalPatchMeasureFilterExpression = { sql: Function; }; export type PatchMeasureExpression = { type: 'PatchMeasure'; sourceMeasure: string; replaceAggregationType: string | null; addFilters: Array>; }; export type EvalPatchMeasureExpression = { type: 'PatchMeasure'; sourceMeasure: string; replaceAggregationType: string | null; addFilters: Array; }; type ParsedMemberExpression = { expression: string[] | PatchMeasureExpression; cubeName: string; name: string; expressionName: string; definition: string; groupingSet?: GroupingSet; }; type MemberExpression = Omit & { expression: Function | EvalPatchMeasureExpression; }; type InputSqlFunction = { cubeParams: Array; sql: string; }; export type InputMemberExpressionSqlFunction = { type: 'SqlFunction'; } & InputSqlFunction; export type InputMemberExpressionPatchMeasure = { type: 'PatchMeasure'; sourceMeasure: string; replaceAggregationType: string | null; addFilters: Array; }; export type InputMemberExpressionExpr = InputMemberExpressionSqlFunction | InputMemberExpressionPatchMeasure; export type InputMemberExpression = { cubeName: string; alias: string; expr: InputMemberExpressionExpr; groupingSet: GroupingSet | null; }; /** * Query datetime dimension interface. */ interface QueryTimeDimension { dimension: Member; dateRange?: string[] | string; compareDateRange?: string[]; granularity?: QueryTimeDimensionGranularity; } type SubqueryJoins = { sql: string; on: string | ParsedMemberExpression | MemberExpression; joinType: 'LEFT' | 'INNER'; alias: string; }; type JoinHint = Array; /** * Incoming network query data type. */ interface Query { measures: (Member | MemberExpression | ParsedMemberExpression)[]; dimensions?: (Member | TimeMember | MemberExpression | ParsedMemberExpression)[]; filters?: (QueryFilter | LogicalAndFilter | LogicalOrFilter)[]; timeDimensions?: QueryTimeDimension[]; segments?: (Member | MemberExpression | ParsedMemberExpression)[]; limit?: null | number; offset?: number; total?: boolean; totalQuery?: boolean; order?: any; timezone?: string; cacheMode?: CacheMode; cache?: CacheMode; ungrouped?: boolean; responseFormat?: ResultType; subqueryJoins?: Array; joinHints?: Array; requestId?: string; } /** * Normalized filter interface. */ interface NormalizedQueryFilter extends QueryFilter { dimension?: Member; } /** * Normalized query interface. */ interface NormalizedQuery extends Query { filters?: NormalizedQueryFilter[]; rowLimit?: null | number; order?: { id: string; desc: boolean; }[]; maskedMembers?: { member: string; filter?: any; }[]; } export type { QueryFilter, LogicalAndFilter, LogicalOrFilter, QueryTimeDimension, Query, NormalizedQueryFilter, NormalizedQuery, MemberExpression, ParsedMemberExpression, }; //# sourceMappingURL=query.d.ts.map