@finos/legend-application-query 5.2.6 → 5.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/QueryBuilder.d.ts.map +1 -1
- package/lib/components/QueryBuilder.js +22 -11
- package/lib/components/QueryBuilder.js.map +1 -1
- package/lib/components/QueryBuilderResultPanel.d.ts.map +1 -1
- package/lib/components/QueryBuilderResultPanel.js +12 -7
- package/lib/components/QueryBuilderResultPanel.js.map +1 -1
- package/lib/components/QueryBuilderSetupPanel.js +1 -1
- package/lib/components/QueryBuilderSetupPanel.js.map +1 -1
- package/lib/components/explorer/QueryBuilderExplorerPanel.d.ts +1 -2
- package/lib/components/explorer/QueryBuilderExplorerPanel.d.ts.map +1 -1
- package/lib/components/explorer/QueryBuilderExplorerPanel.js +14 -16
- package/lib/components/explorer/QueryBuilderExplorerPanel.js.map +1 -1
- package/lib/components/explorer/QueryBuilderPropertySearchPanel.js +2 -2
- package/lib/components/explorer/QueryBuilderPropertySearchPanel.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderFetchStructurePanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderFetchStructurePanel.js +22 -105
- package/lib/components/fetch-structure/QueryBuilderFetchStructurePanel.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderGraphFetchTreePanel.d.ts +1 -2
- package/lib/components/fetch-structure/QueryBuilderGraphFetchTreePanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderGraphFetchTreePanel.js +8 -10
- package/lib/components/fetch-structure/QueryBuilderGraphFetchTreePanel.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.js +23 -17
- package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderProjectionPanel.d.ts +2 -2
- package/lib/components/fetch-structure/QueryBuilderProjectionPanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderProjectionPanel.js +15 -12
- package/lib/components/fetch-structure/QueryBuilderProjectionPanel.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.d.ts +2 -2
- package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.js +23 -28
- package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.js.map +1 -1
- package/lib/components/filter/QueryBuilderFilterPanel.js +7 -7
- package/lib/components/filter/QueryBuilderFilterPanel.js.map +1 -1
- package/lib/components/shared/QueryBuilderPanelIssueCountBadge.d.ts.map +1 -1
- package/lib/components/shared/QueryBuilderPanelIssueCountBadge.js +1 -1
- package/lib/components/shared/QueryBuilderPanelIssueCountBadge.js.map +1 -1
- package/lib/graphManager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.d.ts.map +1 -1
- package/lib/graphManager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.js +5 -3
- package/lib/graphManager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.js.map +1 -1
- package/lib/index.css +2 -2
- package/lib/index.css.map +1 -1
- package/lib/package.json +7 -7
- package/lib/stores/QueryBuilderPreviewDataHelper.d.ts.map +1 -1
- package/lib/stores/QueryBuilderPreviewDataHelper.js +17 -14
- package/lib/stores/QueryBuilderPreviewDataHelper.js.map +1 -1
- package/lib/stores/QueryBuilderPropertyEditorState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderPropertyEditorState.js +34 -24
- package/lib/stores/QueryBuilderPropertyEditorState.js.map +1 -1
- package/lib/stores/QueryBuilderState.d.ts +1 -2
- package/lib/stores/QueryBuilderState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderState.js +17 -26
- package/lib/stores/QueryBuilderState.js.map +1 -1
- package/lib/stores/QueryBuilderStateBuilder.d.ts +124 -0
- package/lib/stores/QueryBuilderStateBuilder.d.ts.map +1 -0
- package/lib/stores/QueryBuilderStateBuilder.js +310 -0
- package/lib/stores/QueryBuilderStateBuilder.js.map +1 -0
- package/lib/stores/{QueryBuilderTestUtils.d.ts → QueryBuilderStateTestUtils.d.ts} +2 -2
- package/lib/stores/QueryBuilderStateTestUtils.d.ts.map +1 -0
- package/lib/stores/{QueryBuilderTestUtils.js → QueryBuilderStateTestUtils.js} +2 -2
- package/lib/stores/QueryBuilderStateTestUtils.js.map +1 -0
- package/lib/stores/QueryBuilderTypeaheadHelper.d.ts.map +1 -1
- package/lib/stores/QueryBuilderTypeaheadHelper.js +14 -12
- package/lib/stores/QueryBuilderTypeaheadHelper.js.map +1 -1
- package/lib/stores/QueryBuilderValueSpecificationBuilder.d.ts +3 -11
- package/lib/stores/QueryBuilderValueSpecificationBuilder.d.ts.map +1 -1
- package/lib/stores/QueryBuilderValueSpecificationBuilder.js +10 -319
- package/lib/stores/QueryBuilderValueSpecificationBuilder.js.map +1 -1
- package/lib/stores/QueryBuilderValueSpecificationBuilderHelper.d.ts +27 -0
- package/lib/stores/QueryBuilderValueSpecificationBuilderHelper.d.ts.map +1 -0
- package/lib/stores/QueryBuilderValueSpecificationBuilderHelper.js +153 -0
- package/lib/stores/QueryBuilderValueSpecificationBuilderHelper.js.map +1 -0
- package/lib/stores/QueryBuilderValueSpecificationHelper.d.ts +37 -1
- package/lib/stores/QueryBuilderValueSpecificationHelper.d.ts.map +1 -1
- package/lib/stores/QueryBuilderValueSpecificationHelper.js +79 -2
- package/lib/stores/QueryBuilderValueSpecificationHelper.js.map +1 -1
- package/lib/stores/explorer/QueryBuilderExplorerState.d.ts +12 -11
- package/lib/stores/explorer/QueryBuilderExplorerState.d.ts.map +1 -1
- package/lib/stores/explorer/QueryBuilderExplorerState.js +53 -20
- package/lib/stores/explorer/QueryBuilderExplorerState.js.map +1 -1
- package/lib/stores/explorer/QueryBuilderPropertySearchPanelState.d.ts +1 -1
- package/lib/stores/explorer/QueryBuilderPropertySearchPanelState.d.ts.map +1 -1
- package/lib/stores/explorer/QueryBuilderPropertySearchPanelState.js +3 -1
- package/lib/stores/explorer/QueryBuilderPropertySearchPanelState.js.map +1 -1
- package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.d.ts +17 -0
- package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.d.ts.map +1 -1
- package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.js +10 -0
- package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.js.map +1 -1
- package/lib/stores/fetch-structure/QueryBuilderFetchStructureState.d.ts +3 -20
- package/lib/stores/fetch-structure/QueryBuilderFetchStructureState.d.ts.map +1 -1
- package/lib/stores/fetch-structure/QueryBuilderFetchStructureState.js +31 -73
- package/lib/stores/fetch-structure/QueryBuilderFetchStructureState.js.map +1 -1
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.d.ts +17 -4
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.d.ts.map +1 -1
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.js +110 -21
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.js.map +1 -1
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.d.ts +20 -0
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.d.ts.map +1 -0
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.js +62 -0
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.js.map +1 -0
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeUtil.d.ts +2 -1
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeUtil.d.ts.map +1 -1
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeUtil.js +3 -8
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeUtil.js.map +1 -1
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchValueSpecificationBuilder.d.ts +9 -2
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchValueSpecificationBuilder.d.ts.map +1 -1
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchValueSpecificationBuilder.js +28 -5
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchValueSpecificationBuilder.js.map +1 -1
- package/lib/stores/fetch-structure/projection/QueryBuilderProjectionColumnState.js +2 -2
- package/lib/stores/fetch-structure/projection/QueryBuilderProjectionColumnState.js.map +1 -1
- package/lib/stores/fetch-structure/projection/QueryBuilderProjectionState.d.ts +10 -2
- package/lib/stores/fetch-structure/projection/QueryBuilderProjectionState.d.ts.map +1 -1
- package/lib/stores/fetch-structure/projection/QueryBuilderProjectionState.js +102 -39
- package/lib/stores/fetch-structure/projection/QueryBuilderProjectionState.js.map +1 -1
- package/lib/stores/fetch-structure/projection/QueryBuilderProjectionStateBuilder.d.ts +25 -0
- package/lib/stores/fetch-structure/projection/QueryBuilderProjectionStateBuilder.d.ts.map +1 -0
- package/lib/stores/fetch-structure/projection/QueryBuilderProjectionStateBuilder.js +186 -0
- package/lib/stores/fetch-structure/projection/QueryBuilderProjectionStateBuilder.js.map +1 -0
- package/lib/stores/fetch-structure/projection/QueryBuilderProjectionValueSpecificationBuilder.d.ts +9 -4
- package/lib/stores/fetch-structure/projection/QueryBuilderProjectionValueSpecificationBuilder.d.ts.map +1 -1
- package/lib/stores/fetch-structure/projection/QueryBuilderProjectionValueSpecificationBuilder.js +129 -13
- package/lib/stores/fetch-structure/projection/QueryBuilderProjectionValueSpecificationBuilder.js.map +1 -1
- package/lib/stores/fetch-structure/projection/aggregation/QueryBuilderAggregationStateBuilder.d.ts +20 -0
- package/lib/stores/fetch-structure/projection/aggregation/QueryBuilderAggregationStateBuilder.d.ts.map +1 -0
- package/lib/stores/fetch-structure/projection/aggregation/QueryBuilderAggregationStateBuilder.js +96 -0
- package/lib/stores/fetch-structure/projection/aggregation/QueryBuilderAggregationStateBuilder.js.map +1 -0
- package/lib/stores/fetch-structure/projection/aggregation/operators/QueryBuilderAggregateOperator_DistinctCount.js +1 -1
- package/lib/stores/fetch-structure/projection/aggregation/operators/QueryBuilderAggregateOperator_DistinctCount.js.map +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/{QueryBuilderPostFilterValueSpecificationProcessor.d.ts → QueryBuilderPostFilterStateBuilder.d.ts} +4 -3
- package/lib/stores/fetch-structure/projection/post-filter/QueryBuilderPostFilterStateBuilder.d.ts.map +1 -0
- package/lib/stores/fetch-structure/projection/post-filter/{QueryBuilderPostFilterValueSpecificationProcessor.js → QueryBuilderPostFilterStateBuilder.js} +30 -21
- package/lib/stores/fetch-structure/projection/post-filter/QueryBuilderPostFilterStateBuilder.js.map +1 -0
- package/lib/stores/fetch-structure/projection/post-filter/QueryBuilderPostFilterValueSpecificationBuilder.d.ts.map +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/QueryBuilderPostFilterValueSpecificationBuilder.js +1 -4
- package/lib/stores/fetch-structure/projection/post-filter/QueryBuilderPostFilterValueSpecificationBuilder.js.map +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_Contain.js +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_Contain.js.map +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_EndWith.js +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_EndWith.js.map +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_Equal.js +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_Equal.js.map +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThan.js +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThan.js.map +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThanEqual.js +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThanEqual.js.map +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_In.js +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_In.js.map +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_IsEmpty.js +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_IsEmpty.js.map +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_LessThan.js +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_LessThan.js.map +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_LessThanEqual.js +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_LessThanEqual.js.map +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_StartWith.js +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_StartWith.js.map +1 -1
- package/lib/stores/filter/QueryBuilderFilterStateBuilder.d.ts +19 -0
- package/lib/stores/filter/QueryBuilderFilterStateBuilder.d.ts.map +1 -0
- package/lib/stores/filter/QueryBuilderFilterStateBuilder.js +74 -0
- package/lib/stores/filter/QueryBuilderFilterStateBuilder.js.map +1 -0
- package/lib/stores/filter/{QueryBuilderValueSpecificationBuilder.d.ts → QueryBuilderFilterValueSpecificationBuilder.d.ts} +1 -1
- package/lib/stores/filter/QueryBuilderFilterValueSpecificationBuilder.d.ts.map +1 -0
- package/lib/stores/filter/{QueryBuilderValueSpecificationBuilder.js → QueryBuilderFilterValueSpecificationBuilder.js} +1 -1
- package/lib/stores/filter/QueryBuilderFilterValueSpecificationBuilder.js.map +1 -0
- package/lib/stores/filter/operators/QueryBuilderFilterOperatorHelper.d.ts.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperatorHelper.js +5 -5
- package/lib/stores/filter/operators/QueryBuilderFilterOperatorHelper.js.map +1 -1
- package/package.json +14 -14
- package/src/components/QueryBuilder.tsx +47 -28
- package/src/components/QueryBuilderResultPanel.tsx +21 -14
- package/src/components/QueryBuilderSetupPanel.tsx +1 -1
- package/src/components/explorer/QueryBuilderExplorerPanel.tsx +23 -38
- package/src/components/explorer/QueryBuilderPropertySearchPanel.tsx +2 -2
- package/src/components/fetch-structure/QueryBuilderFetchStructurePanel.tsx +41 -175
- package/src/components/fetch-structure/QueryBuilderGraphFetchTreePanel.tsx +9 -12
- package/src/components/fetch-structure/QueryBuilderPostFilterPanel.tsx +62 -28
- package/src/components/fetch-structure/QueryBuilderProjectionPanel.tsx +74 -48
- package/src/components/fetch-structure/QueryBuilderResultModifierPanel.tsx +33 -41
- package/src/components/filter/QueryBuilderFilterPanel.tsx +7 -7
- package/src/components/shared/QueryBuilderPanelIssueCountBadge.tsx +3 -1
- package/src/graphManager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.ts +5 -8
- package/src/stores/QueryBuilderPreviewDataHelper.ts +27 -18
- package/src/stores/QueryBuilderPropertyEditorState.ts +40 -31
- package/src/stores/QueryBuilderState.ts +26 -32
- package/src/stores/QueryBuilderStateBuilder.ts +584 -0
- package/src/stores/{QueryBuilderTestUtils.ts → QueryBuilderStateTestUtils.ts} +1 -1
- package/src/stores/QueryBuilderTypeaheadHelper.ts +23 -16
- package/src/stores/QueryBuilderValueSpecificationBuilder.ts +24 -584
- package/src/stores/QueryBuilderValueSpecificationBuilderHelper.ts +248 -0
- package/src/stores/QueryBuilderValueSpecificationHelper.ts +114 -0
- package/src/stores/explorer/QueryBuilderExplorerState.ts +73 -33
- package/src/stores/explorer/QueryBuilderPropertySearchPanelState.ts +3 -1
- package/src/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.ts +33 -2
- package/src/stores/fetch-structure/QueryBuilderFetchStructureState.ts +53 -118
- package/src/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.ts +166 -26
- package/src/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.ts +131 -0
- package/src/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeUtil.ts +10 -19
- package/src/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchValueSpecificationBuilder.ts +68 -4
- package/src/stores/fetch-structure/projection/QueryBuilderProjectionColumnState.ts +2 -2
- package/src/stores/fetch-structure/projection/QueryBuilderProjectionState.ts +172 -67
- package/src/stores/fetch-structure/projection/QueryBuilderProjectionStateBuilder.ts +426 -0
- package/src/stores/fetch-structure/projection/QueryBuilderProjectionValueSpecificationBuilder.ts +266 -21
- package/src/stores/fetch-structure/projection/aggregation/QueryBuilderAggregationStateBuilder.ts +228 -0
- package/src/stores/fetch-structure/projection/aggregation/operators/QueryBuilderAggregateOperator_DistinctCount.ts +1 -1
- package/src/stores/fetch-structure/projection/post-filter/{QueryBuilderPostFilterValueSpecificationProcessor.ts → QueryBuilderPostFilterStateBuilder.ts} +68 -48
- package/src/stores/fetch-structure/projection/post-filter/QueryBuilderPostFilterValueSpecificationBuilder.ts +1 -11
- package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_Contain.ts +1 -1
- package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_EndWith.ts +1 -1
- package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_Equal.ts +1 -1
- package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThan.ts +1 -1
- package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThanEqual.ts +1 -1
- package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_In.ts +1 -1
- package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_IsEmpty.ts +1 -1
- package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_LessThan.ts +1 -1
- package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_LessThanEqual.ts +1 -1
- package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_StartWith.ts +1 -1
- package/src/stores/filter/QueryBuilderFilterStateBuilder.ts +155 -0
- package/src/stores/filter/{QueryBuilderValueSpecificationBuilder.ts → QueryBuilderFilterValueSpecificationBuilder.ts} +0 -0
- package/src/stores/filter/operators/QueryBuilderFilterOperatorHelper.ts +5 -5
- package/tsconfig.json +10 -5
- package/tsconfig.package.json +1 -1
- package/lib/stores/QueryBuilderTestUtils.d.ts.map +0 -1
- package/lib/stores/QueryBuilderTestUtils.js.map +0 -1
- package/lib/stores/QueryBuilderValueSpecificationProcessor.d.ts +0 -56
- package/lib/stores/QueryBuilderValueSpecificationProcessor.d.ts.map +0 -1
- package/lib/stores/QueryBuilderValueSpecificationProcessor.js +0 -548
- package/lib/stores/QueryBuilderValueSpecificationProcessor.js.map +0 -1
- package/lib/stores/fetch-structure/projection/post-filter/QueryBuilderPostFilterValueSpecificationProcessor.d.ts.map +0 -1
- package/lib/stores/fetch-structure/projection/post-filter/QueryBuilderPostFilterValueSpecificationProcessor.js.map +0 -1
- package/lib/stores/filter/QueryBuilderValueSpecificationBuilder.d.ts.map +0 -1
- package/lib/stores/filter/QueryBuilderValueSpecificationBuilder.js.map +0 -1
- package/src/stores/QueryBuilderValueSpecificationProcessor.ts +0 -1254
@@ -0,0 +1,186 @@
|
|
1
|
+
/**
|
2
|
+
* Copyright (c) 2020-present, Goldman Sachs
|
3
|
+
*
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
* you may not use this file except in compliance with the License.
|
6
|
+
* You may obtain a copy of the License at
|
7
|
+
*
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
*
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
* See the License for the specific language governing permissions and
|
14
|
+
* limitations under the License.
|
15
|
+
*/
|
16
|
+
import { AbstractPropertyExpression, CollectionInstanceValue, DerivedProperty, matchFunctionName, RawLambda, SimpleFunctionExpression, V1_deserializeRawValueSpecification, V1_RawLambda, VariableExpression, } from '@finos/legend-graph';
|
17
|
+
import { assertNonNullable, assertTrue, assertType, guaranteeNonNullable, guaranteeType, isNonNullable, returnUndefOnError, } from '@finos/legend-shared';
|
18
|
+
import { QUERY_BUILDER_SUPPORTED_FUNCTIONS } from '../../../QueryBuilder_Const.js';
|
19
|
+
import { QueryBuilderValueSpecificationProcessor } from '../../QueryBuilderStateBuilder.js';
|
20
|
+
import { extractNullableNumberFromInstanceValue, extractNullableStringFromInstanceValue, validatePropertyExpressionChain, } from '../../QueryBuilderValueSpecificationHelper.js';
|
21
|
+
import { FETCH_STRUCTURE_IMPLEMENTATION } from '../QueryBuilderFetchStructureImplementationState.js';
|
22
|
+
import { QueryBuilderDerivationProjectionColumnState, QueryBuilderSimpleProjectionColumnState, } from './QueryBuilderProjectionColumnState.js';
|
23
|
+
import { QueryBuilderProjectionState } from './QueryBuilderProjectionState.js';
|
24
|
+
import { COLUMN_SORT_TYPE, SortColumnState, } from './QueryResultSetModifierState.js';
|
25
|
+
export const processTDSProjectExpression = (expression, queryBuilderState) => {
|
26
|
+
// update fetch-structure
|
27
|
+
queryBuilderState.fetchStructureState.changeImplementation(FETCH_STRUCTURE_IMPLEMENTATION.PROJECTION);
|
28
|
+
// check parameters
|
29
|
+
assertTrue(expression.parametersValues.length === 3, `Can't process project() expression: project() expects 2 arguments`);
|
30
|
+
// check preceding expression
|
31
|
+
const precedingExpression = guaranteeType(expression.parametersValues[0], SimpleFunctionExpression, `Can't process project() expression: only support project() immediately following an expression`);
|
32
|
+
assertTrue(matchFunctionName(precedingExpression.functionName, [
|
33
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.GET_ALL,
|
34
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.FILTER,
|
35
|
+
]), `Can't process project() expression: only support project() immediately following either getAll() or filter()`);
|
36
|
+
QueryBuilderValueSpecificationProcessor.process(precedingExpression, queryBuilderState);
|
37
|
+
// check columns
|
38
|
+
const columnLambdas = expression.parametersValues[1];
|
39
|
+
assertType(columnLambdas, CollectionInstanceValue, `Can't process project() expression: project() expects argument #1 to be a collection`);
|
40
|
+
columnLambdas.values.map((value) => QueryBuilderValueSpecificationProcessor.processChild(value, expression, queryBuilderState));
|
41
|
+
// check column aliases
|
42
|
+
const columnAliases = expression.parametersValues[2];
|
43
|
+
assertType(columnAliases, CollectionInstanceValue, `Can't process project() expression: project() expects argument #2 to be a collection`);
|
44
|
+
assertTrue(columnLambdas.values.length === columnAliases.values.length, `Can't process project() expression: number of aliases does not match the number of columns`);
|
45
|
+
const aliases = columnAliases.values
|
46
|
+
.map(extractNullableStringFromInstanceValue)
|
47
|
+
.filter(isNonNullable);
|
48
|
+
// build state
|
49
|
+
if (queryBuilderState.fetchStructureState.implementation instanceof
|
50
|
+
QueryBuilderProjectionState) {
|
51
|
+
const projectionState = queryBuilderState.fetchStructureState.implementation;
|
52
|
+
projectionState.columns.forEach((column, idx) => column.setColumnName(aliases[idx]));
|
53
|
+
}
|
54
|
+
};
|
55
|
+
export const processTDSProjectionColumnPropertyExpression = (expression, queryBuilderState) => {
|
56
|
+
if (queryBuilderState.fetchStructureState.implementation instanceof
|
57
|
+
QueryBuilderProjectionState) {
|
58
|
+
const projectionState = queryBuilderState.fetchStructureState.implementation;
|
59
|
+
// NOTE: we do this before creating the projection state, as we will
|
60
|
+
// auto-fill arguments for derived properties when missing as part of building
|
61
|
+
// the property expression state.
|
62
|
+
let currentPropertyExpression = expression;
|
63
|
+
while (currentPropertyExpression instanceof AbstractPropertyExpression) {
|
64
|
+
const propertyExpression = currentPropertyExpression;
|
65
|
+
validatePropertyExpressionChain(currentPropertyExpression, queryBuilderState.graphManagerState.graph);
|
66
|
+
currentPropertyExpression = guaranteeNonNullable(currentPropertyExpression.parametersValues[0]);
|
67
|
+
// here we just do a simple check to ensure that if we encounter derived properties
|
68
|
+
// the number of parameters and arguments provided match
|
69
|
+
if (propertyExpression.func instanceof DerivedProperty) {
|
70
|
+
assertTrue((Array.isArray(propertyExpression.func.parameters)
|
71
|
+
? propertyExpression.func.parameters.length
|
72
|
+
: 0) ===
|
73
|
+
propertyExpression.parametersValues.length - 1, `Can't process property expression: derived property '${propertyExpression.func.name}' expects number of provided arguments to match number of parameters`);
|
74
|
+
}
|
75
|
+
// Take care of chains of subtype (a pattern that is not useful, but we want to support and rectify)
|
76
|
+
// $x.employees->subType(@Person)->subType(@Staff)
|
77
|
+
while (currentPropertyExpression instanceof SimpleFunctionExpression &&
|
78
|
+
matchFunctionName(currentPropertyExpression.functionName, QUERY_BUILDER_SUPPORTED_FUNCTIONS.SUBTYPE)) {
|
79
|
+
currentPropertyExpression = guaranteeNonNullable(currentPropertyExpression.parametersValues[0]);
|
80
|
+
}
|
81
|
+
}
|
82
|
+
assertType(currentPropertyExpression, VariableExpression, `Can't process property expression: expects expression root to be a variable`);
|
83
|
+
const columnState = new QueryBuilderSimpleProjectionColumnState(projectionState, expression, false);
|
84
|
+
projectionState.addColumn(columnState, { skipSorting: true });
|
85
|
+
// NOTE: technically we should set the lambda parameter name when we process
|
86
|
+
// the lambda, not when we process the lambda body like this, but that requires
|
87
|
+
// some setup, so it's easier to do it here. The validation of this should have
|
88
|
+
// already been taken care of by the builder.
|
89
|
+
columnState.setLambdaParameterName(currentPropertyExpression.name);
|
90
|
+
}
|
91
|
+
};
|
92
|
+
export const processTDSProjectionDerivationExpression = (value, parentExpression, queryBuilderState) => {
|
93
|
+
if (queryBuilderState.fetchStructureState.implementation instanceof
|
94
|
+
QueryBuilderProjectionState) {
|
95
|
+
const projectionState = queryBuilderState.fetchStructureState.implementation;
|
96
|
+
const rawLambdaProtocol = returnUndefOnError(() => guaranteeType(V1_deserializeRawValueSpecification(value.content), V1_RawLambda));
|
97
|
+
assertNonNullable(rawLambdaProtocol, `Can't process unknown value: only support ${parentExpression.functionName}() column expression as a lambda`);
|
98
|
+
const columnState = new QueryBuilderDerivationProjectionColumnState(projectionState, new RawLambda(rawLambdaProtocol.parameters, rawLambdaProtocol.body));
|
99
|
+
projectionState.addColumn(columnState, { skipSorting: true });
|
100
|
+
}
|
101
|
+
};
|
102
|
+
export const processTDSTakeExpression = (expression, queryBuilderState) => {
|
103
|
+
// check parameters
|
104
|
+
assertTrue(expression.parametersValues.length === 2, `Can't process take() expression: take() expects 1 argument`);
|
105
|
+
// check preceding expression
|
106
|
+
const precedingExpression = guaranteeType(expression.parametersValues[0], SimpleFunctionExpression, `Can't process take() expression: only support take() immediately following an expression`);
|
107
|
+
assertTrue(matchFunctionName(precedingExpression.functionName, [
|
108
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_TAKE,
|
109
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_DISTINCT,
|
110
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_SORT,
|
111
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_PROJECT,
|
112
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_GROUP_BY,
|
113
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_FILTER,
|
114
|
+
]), `Can't process take() expression: only support take() in TDS expression`);
|
115
|
+
QueryBuilderValueSpecificationProcessor.process(precedingExpression, queryBuilderState);
|
116
|
+
// build state
|
117
|
+
if (queryBuilderState.fetchStructureState.implementation instanceof
|
118
|
+
QueryBuilderProjectionState) {
|
119
|
+
const projectionState = queryBuilderState.fetchStructureState.implementation;
|
120
|
+
const takeValue = extractNullableNumberFromInstanceValue(guaranteeNonNullable(expression.parametersValues[1]));
|
121
|
+
projectionState.resultSetModifierState.setLimit(takeValue);
|
122
|
+
}
|
123
|
+
};
|
124
|
+
export const processTDSDistinctExpression = (expression, queryBuilderState) => {
|
125
|
+
// check parameters
|
126
|
+
assertTrue(expression.parametersValues.length === 1, `Can't process disctinct() expression: distinct() expects no parameter`);
|
127
|
+
// check preceding expression
|
128
|
+
const precedingExpression = guaranteeType(expression.parametersValues[0], SimpleFunctionExpression, `Can't process distinct() expression: only support distinct() immediately following an expression`);
|
129
|
+
assertTrue(matchFunctionName(precedingExpression.functionName, [
|
130
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_TAKE,
|
131
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_DISTINCT,
|
132
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_SORT,
|
133
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_PROJECT,
|
134
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_GROUP_BY,
|
135
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_FILTER,
|
136
|
+
]), `Can't process distinct() expression: only support distinct() in TDS expression`);
|
137
|
+
QueryBuilderValueSpecificationProcessor.process(precedingExpression, queryBuilderState);
|
138
|
+
// build state
|
139
|
+
if (queryBuilderState.fetchStructureState.implementation instanceof
|
140
|
+
QueryBuilderProjectionState) {
|
141
|
+
const projectionState = queryBuilderState.fetchStructureState.implementation;
|
142
|
+
projectionState.resultSetModifierState.distinct = true;
|
143
|
+
}
|
144
|
+
};
|
145
|
+
export const processTDSSortExpression = (expression, queryBuilderState) => {
|
146
|
+
// check parameters
|
147
|
+
assertTrue(expression.parametersValues.length === 2, `Can't process sort() expression: sort() expects 1 argument`);
|
148
|
+
// check preceding expression
|
149
|
+
const precedingExpression = guaranteeType(expression.parametersValues[0], SimpleFunctionExpression, `Can't process sort() expression: only support sort() immediately following an expression`);
|
150
|
+
assertTrue(matchFunctionName(precedingExpression.functionName, [
|
151
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_TAKE,
|
152
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_DISTINCT,
|
153
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_SORT,
|
154
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_PROJECT,
|
155
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_GROUP_BY,
|
156
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_FILTER,
|
157
|
+
]), `Can't process sort() expression: only support sort() in TDS expression`);
|
158
|
+
QueryBuilderValueSpecificationProcessor.process(precedingExpression, queryBuilderState);
|
159
|
+
// check sort configuration
|
160
|
+
const sortLambdas = expression.parametersValues[1];
|
161
|
+
assertType(sortLambdas, CollectionInstanceValue, `Can't process sort() expression: sort() argument should be a collection`);
|
162
|
+
sortLambdas.values.map((value) => QueryBuilderValueSpecificationProcessor.processChild(value, expression, queryBuilderState));
|
163
|
+
};
|
164
|
+
export const processTDSSortDirectionExpression = (expression, parentExpression, queryBuilderState) => {
|
165
|
+
const functionName = expression.functionName;
|
166
|
+
// check parent expression
|
167
|
+
assertTrue(Boolean(parentExpression &&
|
168
|
+
matchFunctionName(parentExpression.functionName, QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_SORT)), `Can't process ${functionName}() expression: only support ${functionName}() used within a sort() expression`);
|
169
|
+
// check parameters
|
170
|
+
assertTrue(expression.parametersValues.length === 1, `Can't process ${functionName}() expression: ${functionName}() expects no argument`);
|
171
|
+
// build state
|
172
|
+
if (queryBuilderState.fetchStructureState.implementation instanceof
|
173
|
+
QueryBuilderProjectionState) {
|
174
|
+
const projectionState = queryBuilderState.fetchStructureState.implementation;
|
175
|
+
const sortColumnName = extractNullableStringFromInstanceValue(guaranteeNonNullable(expression.parametersValues[0]));
|
176
|
+
const queryBuilderProjectionColumnState = projectionState.columns.find((e) => e.columnName === sortColumnName);
|
177
|
+
if (queryBuilderProjectionColumnState) {
|
178
|
+
const sortColumnState = new SortColumnState(queryBuilderProjectionColumnState);
|
179
|
+
sortColumnState.sortType = matchFunctionName(functionName, QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_ASC)
|
180
|
+
? COLUMN_SORT_TYPE.ASC
|
181
|
+
: COLUMN_SORT_TYPE.DESC;
|
182
|
+
projectionState.resultSetModifierState.addSortColumn(sortColumnState);
|
183
|
+
}
|
184
|
+
}
|
185
|
+
};
|
186
|
+
//# sourceMappingURL=QueryBuilderProjectionStateBuilder.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"QueryBuilderProjectionStateBuilder.js","sourceRoot":"","sources":["../../../../src/stores/fetch-structure/projection/QueryBuilderProjectionStateBuilder.ts"],"names":[],"mappings":"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"}
|
package/lib/stores/fetch-structure/projection/QueryBuilderProjectionValueSpecificationBuilder.d.ts
CHANGED
@@ -14,8 +14,13 @@
|
|
14
14
|
* limitations under the License.
|
15
15
|
*/
|
16
16
|
import { type LambdaFunction } from '@finos/legend-graph';
|
17
|
-
import {
|
18
|
-
export declare const
|
19
|
-
|
20
|
-
|
17
|
+
import type { QueryBuilderProjectionState } from './QueryBuilderProjectionState.js';
|
18
|
+
export declare const appendProjection: (projectionState: QueryBuilderProjectionState, lambdaFunction: LambdaFunction, options?: {
|
19
|
+
/**
|
20
|
+
* Set queryBuilderState to `true` when we construct query for execution within the app.
|
21
|
+
* queryBuilderState will make the lambda function building process overrides several query values, such as the row limit.
|
22
|
+
*/
|
23
|
+
isBuildingExecutionQuery?: boolean | undefined;
|
24
|
+
keepSourceInformation?: boolean | undefined;
|
25
|
+
}) => void;
|
21
26
|
//# sourceMappingURL=QueryBuilderProjectionValueSpecificationBuilder.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"QueryBuilderProjectionValueSpecificationBuilder.d.ts","sourceRoot":"","sources":["../../../../src/stores/fetch-structure/projection/QueryBuilderProjectionValueSpecificationBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,KAAK,cAAc,
|
1
|
+
{"version":3,"file":"QueryBuilderProjectionValueSpecificationBuilder.d.ts","sourceRoot":"","sources":["../../../../src/stores/fetch-structure/projection/QueryBuilderProjectionValueSpecificationBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,KAAK,cAAc,EAgBpB,MAAM,qBAAqB,CAAC;AAa7B,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAuIpF,eAAO,MAAM,gBAAgB,oBACV,2BAA2B,kBAC5B,cAAc,YACpB;IACR;;;OAGG;IACH,wBAAwB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/C,qBAAqB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC7C,KACA,IA8NF,CAAC"}
|
package/lib/stores/fetch-structure/projection/QueryBuilderProjectionValueSpecificationBuilder.js
CHANGED
@@ -13,8 +13,13 @@
|
|
13
13
|
* See the License for the specific language governing permissions and
|
14
14
|
* limitations under the License.
|
15
15
|
*/
|
16
|
-
import { CollectionInstanceValue, extractElementNameFromPath, GenericType, GenericTypeExplicitReference,
|
16
|
+
import { CollectionInstanceValue, extractElementNameFromPath, GenericType, GenericTypeExplicitReference, Multiplicity, PrimitiveInstanceValue, PRIMITIVE_TYPE, SimpleFunctionExpression, TYPICAL_MULTIPLICITY_TYPE, INTERNAL__UnknownValueSpecification, V1_serializeRawValueSpecification, V1_transformRawLambda, V1_GraphTransformerContextBuilder, matchFunctionName, } from '@finos/legend-graph';
|
17
|
+
import { guaranteeNonNullable, UnsupportedOperationError, } from '@finos/legend-shared';
|
17
18
|
import { QUERY_BUILDER_SUPPORTED_FUNCTIONS } from '../../../QueryBuilder_Const.js';
|
19
|
+
import { buildPropertyExpressionChain } from '../../QueryBuilderValueSpecificationBuilderHelper.js';
|
20
|
+
import { buildGenericLambdaFunctionInstanceValue } from '../../QueryBuilderValueSpecificationHelper.js';
|
21
|
+
import { appendPostFilter } from './post-filter/QueryBuilderPostFilterValueSpecificationBuilder.js';
|
22
|
+
import { QueryBuilderDerivationProjectionColumnState, QueryBuilderSimpleProjectionColumnState, } from './QueryBuilderProjectionColumnState.js';
|
18
23
|
import { COLUMN_SORT_TYPE, } from './QueryResultSetModifierState.js';
|
19
24
|
const buildSortExpression = (sortColumnState) => {
|
20
25
|
const multiplicityOne = sortColumnState.columnState.projectionState.queryBuilderState.graphManagerState.graph.getTypicalMultiplicity(TYPICAL_MULTIPLICITY_TYPE.ONE);
|
@@ -26,37 +31,39 @@ const buildSortExpression = (sortColumnState) => {
|
|
26
31
|
sortColumnFunction.parametersValues[0] = sortColumnName;
|
27
32
|
return sortColumnFunction;
|
28
33
|
};
|
29
|
-
|
30
|
-
const multiplicityOne =
|
34
|
+
const appendResultSetModifier = (resultModifierState, lambda, options) => {
|
35
|
+
const multiplicityOne = resultModifierState.projectionState.queryBuilderState.graphManagerState.graph.getTypicalMultiplicity(TYPICAL_MULTIPLICITY_TYPE.ONE);
|
31
36
|
if (lambda.expressionSequence.length === 1) {
|
32
37
|
const func = lambda.expressionSequence[0];
|
33
38
|
if (func instanceof SimpleFunctionExpression) {
|
34
|
-
if (matchFunctionName(func.functionName,
|
35
|
-
|
36
|
-
|
39
|
+
if (matchFunctionName(func.functionName, [
|
40
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_PROJECT,
|
41
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_GROUP_BY,
|
42
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_FILTER,
|
43
|
+
])) {
|
37
44
|
let currentExpression = func;
|
38
45
|
// build distinct()
|
39
|
-
if (
|
46
|
+
if (resultModifierState.distinct) {
|
40
47
|
const distinctFunction = new SimpleFunctionExpression(extractElementNameFromPath(QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_DISTINCT), multiplicityOne);
|
41
48
|
distinctFunction.parametersValues[0] = currentExpression;
|
42
49
|
currentExpression = distinctFunction;
|
43
50
|
}
|
44
51
|
// build sort()
|
45
|
-
if (
|
52
|
+
if (resultModifierState.sortColumns.length) {
|
46
53
|
const sortFunction = new SimpleFunctionExpression(extractElementNameFromPath(QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_SORT), multiplicityOne);
|
47
|
-
const multiplicity = new Multiplicity(
|
54
|
+
const multiplicity = new Multiplicity(resultModifierState.sortColumns.length, resultModifierState.sortColumns.length);
|
48
55
|
const collection = new CollectionInstanceValue(multiplicity, undefined);
|
49
56
|
collection.values =
|
50
|
-
|
57
|
+
resultModifierState.sortColumns.map(buildSortExpression);
|
51
58
|
sortFunction.parametersValues[0] = currentExpression;
|
52
59
|
sortFunction.parametersValues[1] = collection;
|
53
60
|
currentExpression = sortFunction;
|
54
61
|
}
|
55
62
|
// build take()
|
56
|
-
if (
|
57
|
-
const limit = new PrimitiveInstanceValue(GenericTypeExplicitReference.create(new GenericType(
|
63
|
+
if (resultModifierState.limit || options?.overridingLimit) {
|
64
|
+
const limit = new PrimitiveInstanceValue(GenericTypeExplicitReference.create(new GenericType(resultModifierState.projectionState.queryBuilderState.graphManagerState.graph.getPrimitiveType(PRIMITIVE_TYPE.INTEGER))), multiplicityOne);
|
58
65
|
limit.values = [
|
59
|
-
Math.min(
|
66
|
+
Math.min(resultModifierState.limit ?? Number.MAX_SAFE_INTEGER, options?.overridingLimit ?? Number.MAX_SAFE_INTEGER),
|
60
67
|
];
|
61
68
|
const takeFunction = new SimpleFunctionExpression(extractElementNameFromPath(QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_TAKE), multiplicityOne);
|
62
69
|
takeFunction.parametersValues[0] = currentExpression;
|
@@ -70,4 +77,113 @@ export const appendResultSetModifiers = (resultModifiersState, lambda, options)
|
|
70
77
|
}
|
71
78
|
return lambda;
|
72
79
|
};
|
80
|
+
export const appendProjection = (projectionState, lambdaFunction, options) => {
|
81
|
+
const queryBuilderState = projectionState.queryBuilderState;
|
82
|
+
const precedingExpression = guaranteeNonNullable(lambdaFunction.expressionSequence[0], `Can't build projection expression: preceding expression is not defined`);
|
83
|
+
const multiplicityOne = queryBuilderState.graphManagerState.graph.getTypicalMultiplicity(TYPICAL_MULTIPLICITY_TYPE.ONE);
|
84
|
+
const typeString = queryBuilderState.graphManagerState.graph.getPrimitiveType(PRIMITIVE_TYPE.STRING);
|
85
|
+
// build projection
|
86
|
+
if (projectionState.aggregationState.columns.length) {
|
87
|
+
// aggregation
|
88
|
+
const groupByFunction = new SimpleFunctionExpression(extractElementNameFromPath(QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_GROUP_BY), multiplicityOne);
|
89
|
+
const colLambdas = new CollectionInstanceValue(new Multiplicity(projectionState.columns.length -
|
90
|
+
projectionState.aggregationState.columns.length, projectionState.columns.length -
|
91
|
+
projectionState.aggregationState.columns.length));
|
92
|
+
const aggregateLambdas = new CollectionInstanceValue(new Multiplicity(projectionState.aggregationState.columns.length, projectionState.aggregationState.columns.length));
|
93
|
+
const colAliases = new CollectionInstanceValue(new Multiplicity(projectionState.columns.length, projectionState.columns.length));
|
94
|
+
projectionState.columns.forEach((projectionColumnState) => {
|
95
|
+
// column alias
|
96
|
+
const colAlias = new PrimitiveInstanceValue(GenericTypeExplicitReference.create(new GenericType(typeString)), multiplicityOne);
|
97
|
+
colAlias.values.push(projectionColumnState.columnName);
|
98
|
+
colAliases.values.push(colAlias);
|
99
|
+
const aggregateColumnState = projectionState.aggregationState.columns.find((column) => column.projectionColumnState === projectionColumnState);
|
100
|
+
// column projection
|
101
|
+
let columnLambda;
|
102
|
+
if (projectionColumnState instanceof QueryBuilderSimpleProjectionColumnState) {
|
103
|
+
columnLambda = buildGenericLambdaFunctionInstanceValue(projectionColumnState.lambdaParameterName, [
|
104
|
+
buildPropertyExpressionChain(projectionColumnState.propertyExpressionState.propertyExpression, projectionColumnState.propertyExpressionState.queryBuilderState),
|
105
|
+
], queryBuilderState.graphManagerState.graph);
|
106
|
+
}
|
107
|
+
else if (projectionColumnState instanceof
|
108
|
+
QueryBuilderDerivationProjectionColumnState) {
|
109
|
+
columnLambda = new INTERNAL__UnknownValueSpecification(V1_serializeRawValueSpecification(V1_transformRawLambda(projectionColumnState.lambda, new V1_GraphTransformerContextBuilder(
|
110
|
+
// TODO?: do we need to include the plugins here?
|
111
|
+
[])
|
112
|
+
.withKeepSourceInformationFlag(Boolean(options?.keepSourceInformation))
|
113
|
+
.build())));
|
114
|
+
}
|
115
|
+
else {
|
116
|
+
throw new UnsupportedOperationError(`Can't build project() column expression: unsupported projection column state`, projectionColumnState);
|
117
|
+
}
|
118
|
+
// column aggregation
|
119
|
+
if (aggregateColumnState) {
|
120
|
+
const aggregateFunctionExpression = new SimpleFunctionExpression(extractElementNameFromPath(QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_AGG), multiplicityOne);
|
121
|
+
const aggregateLambda = buildGenericLambdaFunctionInstanceValue(aggregateColumnState.lambdaParameterName, [
|
122
|
+
aggregateColumnState.operator.buildAggregateExpressionFromState(aggregateColumnState),
|
123
|
+
], aggregateColumnState.aggregationState.projectionState
|
124
|
+
.queryBuilderState.graphManagerState.graph);
|
125
|
+
aggregateFunctionExpression.parametersValues = [
|
126
|
+
columnLambda,
|
127
|
+
aggregateLambda,
|
128
|
+
];
|
129
|
+
aggregateLambdas.values.push(aggregateFunctionExpression);
|
130
|
+
}
|
131
|
+
else {
|
132
|
+
colLambdas.values.push(columnLambda);
|
133
|
+
}
|
134
|
+
});
|
135
|
+
groupByFunction.parametersValues = [
|
136
|
+
precedingExpression,
|
137
|
+
colLambdas,
|
138
|
+
aggregateLambdas,
|
139
|
+
colAliases,
|
140
|
+
];
|
141
|
+
lambdaFunction.expressionSequence[0] = groupByFunction;
|
142
|
+
}
|
143
|
+
else if (projectionState.columns.length) {
|
144
|
+
// projection
|
145
|
+
const projectFunction = new SimpleFunctionExpression(extractElementNameFromPath(QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_PROJECT), multiplicityOne);
|
146
|
+
const colLambdas = new CollectionInstanceValue(new Multiplicity(projectionState.columns.length, projectionState.columns.length));
|
147
|
+
const colAliases = new CollectionInstanceValue(new Multiplicity(projectionState.columns.length, projectionState.columns.length));
|
148
|
+
projectionState.columns.forEach((projectionColumnState) => {
|
149
|
+
// column alias
|
150
|
+
const colAlias = new PrimitiveInstanceValue(GenericTypeExplicitReference.create(new GenericType(typeString)), multiplicityOne);
|
151
|
+
colAlias.values.push(projectionColumnState.columnName);
|
152
|
+
colAliases.values.push(colAlias);
|
153
|
+
// column projection
|
154
|
+
let columnLambda;
|
155
|
+
if (projectionColumnState instanceof QueryBuilderSimpleProjectionColumnState) {
|
156
|
+
columnLambda = buildGenericLambdaFunctionInstanceValue(projectionColumnState.lambdaParameterName, [
|
157
|
+
buildPropertyExpressionChain(projectionColumnState.propertyExpressionState.propertyExpression, projectionColumnState.propertyExpressionState.queryBuilderState),
|
158
|
+
], queryBuilderState.graphManagerState.graph);
|
159
|
+
}
|
160
|
+
else if (projectionColumnState instanceof
|
161
|
+
QueryBuilderDerivationProjectionColumnState) {
|
162
|
+
columnLambda = new INTERNAL__UnknownValueSpecification(V1_serializeRawValueSpecification(V1_transformRawLambda(projectionColumnState.lambda, new V1_GraphTransformerContextBuilder(
|
163
|
+
// TODO?: do we need to include the plugins here?
|
164
|
+
[])
|
165
|
+
.withKeepSourceInformationFlag(Boolean(options?.keepSourceInformation))
|
166
|
+
.build())));
|
167
|
+
}
|
168
|
+
else {
|
169
|
+
throw new UnsupportedOperationError(`Can't build project() column expression: unsupported projection column state`, projectionColumnState);
|
170
|
+
}
|
171
|
+
colLambdas.values.push(columnLambda);
|
172
|
+
});
|
173
|
+
projectFunction.parametersValues = [
|
174
|
+
precedingExpression,
|
175
|
+
colLambdas,
|
176
|
+
colAliases,
|
177
|
+
];
|
178
|
+
lambdaFunction.expressionSequence[0] = projectFunction;
|
179
|
+
}
|
180
|
+
// build post-filter
|
181
|
+
appendPostFilter(projectionState.postFilterState, lambdaFunction);
|
182
|
+
// build result set modifiers
|
183
|
+
appendResultSetModifier(projectionState.resultSetModifierState, lambdaFunction, {
|
184
|
+
overridingLimit: options?.isBuildingExecutionQuery
|
185
|
+
? queryBuilderState.resultState.previewLimit
|
186
|
+
: undefined,
|
187
|
+
});
|
188
|
+
};
|
73
189
|
//# sourceMappingURL=QueryBuilderProjectionValueSpecificationBuilder.js.map
|
package/lib/stores/fetch-structure/projection/QueryBuilderProjectionValueSpecificationBuilder.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"QueryBuilderProjectionValueSpecificationBuilder.js","sourceRoot":"","sources":["../../../../src/stores/fetch-structure/projection/QueryBuilderProjectionValueSpecificationBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAEL,uBAAuB,EACvB,0BAA0B,EAC1B,WAAW,EACX,4BAA4B,EAC5B,
|
1
|
+
{"version":3,"file":"QueryBuilderProjectionValueSpecificationBuilder.js","sourceRoot":"","sources":["../../../../src/stores/fetch-structure/projection/QueryBuilderProjectionValueSpecificationBuilder.ts"],"names":[],"mappings":"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"}
|
package/lib/stores/fetch-structure/projection/aggregation/QueryBuilderAggregationStateBuilder.d.ts
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
/**
|
2
|
+
* Copyright (c) 2020-present, Goldman Sachs
|
3
|
+
*
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
* you may not use this file except in compliance with the License.
|
6
|
+
* You may obtain a copy of the License at
|
7
|
+
*
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
*
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
* See the License for the specific language governing permissions and
|
14
|
+
* limitations under the License.
|
15
|
+
*/
|
16
|
+
import { SimpleFunctionExpression } from '@finos/legend-graph';
|
17
|
+
import type { QueryBuilderState } from '../../../QueryBuilderState.js';
|
18
|
+
export declare const processTDSAggregateExpression: (expression: SimpleFunctionExpression, parentExpression: SimpleFunctionExpression | undefined, queryBuilderState: QueryBuilderState) => void;
|
19
|
+
export declare const processTDSGroupByExpression: (expression: SimpleFunctionExpression, queryBuilderState: QueryBuilderState) => void;
|
20
|
+
//# sourceMappingURL=QueryBuilderAggregationStateBuilder.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"QueryBuilderAggregationStateBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/stores/fetch-structure/projection/aggregation/QueryBuilderAggregationStateBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAIL,wBAAwB,EAEzB,MAAM,qBAAqB,CAAC;AAW7B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAMvE,eAAO,MAAM,6BAA6B,eAC5B,wBAAwB,oBAClB,wBAAwB,GAAG,SAAS,qBACnC,iBAAiB,KACnC,IA4FF,CAAC;AAEF,eAAO,MAAM,2BAA2B,eAC1B,wBAAwB,qBACjB,iBAAiB,KACnC,IAuFF,CAAC"}
|
package/lib/stores/fetch-structure/projection/aggregation/QueryBuilderAggregationStateBuilder.js
ADDED
@@ -0,0 +1,96 @@
|
|
1
|
+
/**
|
2
|
+
* Copyright (c) 2020-present, Goldman Sachs
|
3
|
+
*
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
* you may not use this file except in compliance with the License.
|
6
|
+
* You may obtain a copy of the License at
|
7
|
+
*
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
*
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
* See the License for the specific language governing permissions and
|
14
|
+
* limitations under the License.
|
15
|
+
*/
|
16
|
+
import { CollectionInstanceValue, LambdaFunctionInstanceValue, matchFunctionName, SimpleFunctionExpression, VariableExpression, } from '@finos/legend-graph';
|
17
|
+
import { assertTrue, assertType, guaranteeNonNullable, guaranteeType, isNonNullable, returnUndefOnError, UnsupportedOperationError, } from '@finos/legend-shared';
|
18
|
+
import { QUERY_BUILDER_SUPPORTED_FUNCTIONS } from '../../../../QueryBuilder_Const.js';
|
19
|
+
import { QueryBuilderValueSpecificationProcessor } from '../../../QueryBuilderStateBuilder.js';
|
20
|
+
import { extractNullableStringFromInstanceValue } from '../../../QueryBuilderValueSpecificationHelper.js';
|
21
|
+
import { FETCH_STRUCTURE_IMPLEMENTATION } from '../../QueryBuilderFetchStructureImplementationState.js';
|
22
|
+
import { QueryBuilderProjectionState } from '../QueryBuilderProjectionState.js';
|
23
|
+
export const processTDSAggregateExpression = (expression, parentExpression, queryBuilderState) => {
|
24
|
+
// check parent expression
|
25
|
+
assertTrue(Boolean(parentExpression &&
|
26
|
+
matchFunctionName(parentExpression.functionName, QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_GROUP_BY)), `Can't process agg() expression: only support agg() used within a groupBy() expression`);
|
27
|
+
// check parameters
|
28
|
+
assertTrue(expression.parametersValues.length === 2, `Can't process agg() expression: agg() expects 2 arguments`);
|
29
|
+
// process column lambda
|
30
|
+
QueryBuilderValueSpecificationProcessor.processChild(
|
31
|
+
// TODO?: do we want to do more validation here for the shape of the column lambda?
|
32
|
+
guaranteeNonNullable(expression.parametersValues[0]), expression, queryBuilderState);
|
33
|
+
// build state
|
34
|
+
if (queryBuilderState.fetchStructureState.implementation instanceof
|
35
|
+
QueryBuilderProjectionState) {
|
36
|
+
const projectionState = queryBuilderState.fetchStructureState.implementation;
|
37
|
+
const aggregationState = projectionState.aggregationState;
|
38
|
+
// NOTE: since we process agg() expressions one by one, we know that the current agg()
|
39
|
+
// always correspond to the last column projection state, based on our processing procedure
|
40
|
+
const projectionColumnState = guaranteeNonNullable(projectionState.columns[projectionState.columns.length - 1]);
|
41
|
+
const aggregateLambda = expression.parametersValues[1];
|
42
|
+
assertType(aggregateLambda, LambdaFunctionInstanceValue, `Can't process agg() expression: agg() expects argument #1 to be a lambda function`);
|
43
|
+
const lambdaFunc = guaranteeNonNullable(aggregateLambda.values[0], `Can't process agg() lambda: agg() lambda function is missing`);
|
44
|
+
assertTrue(lambdaFunc.expressionSequence.length === 1, `Can't process agg() lambda: only support agg() lambda body with 1 expression`);
|
45
|
+
const aggregateColumnExpression = guaranteeType(lambdaFunc.expressionSequence[0], SimpleFunctionExpression, `Can't process agg() lambda: only support agg() lambda body with 1 expression`);
|
46
|
+
assertTrue(lambdaFunc.functionType.parameters.length === 1, `Can't process agg() lambda: only support agg() lambda with 1 parameter`);
|
47
|
+
const lambdaParam = guaranteeType(lambdaFunc.functionType.parameters[0], VariableExpression, `Can't process agg() lambda: only support agg() lambda with 1 parameter`);
|
48
|
+
for (const operator of aggregationState.operators) {
|
49
|
+
// NOTE: this allow plugin author to either return `undefined` or throw error
|
50
|
+
// if there is a problem with building the lambda. Either case, the plugin is
|
51
|
+
// considered as not supporting the lambda.
|
52
|
+
const aggregateColumnState = returnUndefOnError(() => operator.buildAggregateColumnState(aggregateColumnExpression, lambdaParam, projectionColumnState));
|
53
|
+
if (aggregateColumnState) {
|
54
|
+
aggregationState.addColumn(aggregateColumnState);
|
55
|
+
return;
|
56
|
+
}
|
57
|
+
}
|
58
|
+
throw new UnsupportedOperationError(`Can't process aggregate expression function: no compatible aggregate operator processer available from plugins`);
|
59
|
+
}
|
60
|
+
};
|
61
|
+
export const processTDSGroupByExpression = (expression, queryBuilderState) => {
|
62
|
+
// update fetch-structure
|
63
|
+
queryBuilderState.fetchStructureState.changeImplementation(FETCH_STRUCTURE_IMPLEMENTATION.PROJECTION);
|
64
|
+
// check parameters
|
65
|
+
assertTrue(expression.parametersValues.length === 4, `Can't process groupBy() expression: groupBy() expects 3 arguments`);
|
66
|
+
// check preceding expression
|
67
|
+
const precedingExpression = guaranteeType(expression.parametersValues[0], SimpleFunctionExpression, `Can't process groupBy() expression: only support groupBy() immediately following an expression`);
|
68
|
+
assertTrue(matchFunctionName(precedingExpression.functionName, [
|
69
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.GET_ALL,
|
70
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.FILTER,
|
71
|
+
]), `Can't process groupBy() expression: only support groupBy() immediately following either getAll() or filter()`);
|
72
|
+
QueryBuilderValueSpecificationProcessor.process(precedingExpression, queryBuilderState);
|
73
|
+
// process columns
|
74
|
+
const columnExpressions = expression.parametersValues[1];
|
75
|
+
assertType(columnExpressions, CollectionInstanceValue, `Can't process groupBy() expression: groupBy() expects argument #1 to be a collection`);
|
76
|
+
columnExpressions.values.map((value) => QueryBuilderValueSpecificationProcessor.processChild(value, expression, queryBuilderState));
|
77
|
+
// process aggregations
|
78
|
+
const aggregateLambdas = expression.parametersValues[2];
|
79
|
+
assertType(aggregateLambdas, CollectionInstanceValue, `Can't process groupBy() expression: groupBy() expects argument #2 to be a collection`);
|
80
|
+
aggregateLambdas.values.map((value) => QueryBuilderValueSpecificationProcessor.processChild(value, expression, queryBuilderState));
|
81
|
+
// process column aliases
|
82
|
+
const columnAliases = expression.parametersValues[3];
|
83
|
+
assertType(columnAliases, CollectionInstanceValue, `Can't process groupBy() expression: groupBy() expects argument #3 to be a collection`);
|
84
|
+
assertTrue(columnAliases.values.length ===
|
85
|
+
columnExpressions.values.length + aggregateLambdas.values.length, `Can't process groupBy() expression: number of aliases does not match the number of columns`);
|
86
|
+
const aliases = columnAliases.values
|
87
|
+
.map(extractNullableStringFromInstanceValue)
|
88
|
+
.filter(isNonNullable);
|
89
|
+
// build state
|
90
|
+
if (queryBuilderState.fetchStructureState.implementation instanceof
|
91
|
+
QueryBuilderProjectionState) {
|
92
|
+
const projectionState = queryBuilderState.fetchStructureState.implementation;
|
93
|
+
projectionState.columns.forEach((column, idx) => column.setColumnName(aliases[idx]));
|
94
|
+
}
|
95
|
+
};
|
96
|
+
//# sourceMappingURL=QueryBuilderAggregationStateBuilder.js.map
|
package/lib/stores/fetch-structure/projection/aggregation/QueryBuilderAggregationStateBuilder.js.map
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"QueryBuilderAggregationStateBuilder.js","sourceRoot":"","sources":["../../../../../src/stores/fetch-structure/projection/aggregation/QueryBuilderAggregationStateBuilder.ts"],"names":[],"mappings":"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"}
|
@@ -53,7 +53,7 @@ export class QueryBuilderAggregateOperator_DistinctCount extends QueryBuilderAgg
|
|
53
53
|
if (matchFunctionName(expression.functionName, QUERY_BUILDER_SUPPORTED_FUNCTIONS.COUNT)) {
|
54
54
|
const aggregateColumnState = new QueryBuilderAggregateColumnState(projectionColumnState.projectionState.aggregationState, projectionColumnState, this);
|
55
55
|
aggregateColumnState.setLambdaParameterName(lambdaParam.name);
|
56
|
-
// count expression
|
56
|
+
// process count expression
|
57
57
|
assertTrue(expression.parametersValues.length === 1, `Can't process count() expression: count() expects no argument`);
|
58
58
|
// distinct expression
|
59
59
|
const distinctExpression = guaranteeType(expression.parametersValues[0], SimpleFunctionExpression, `Can't process '${this.getLabel(projectionColumnState)}' aggregate lambda: only support count() immediately following an expression`);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"QueryBuilderAggregateOperator_DistinctCount.js","sourceRoot":"","sources":["../../../../../../src/stores/fetch-structure/projection/aggregation/operators/QueryBuilderAggregateOperator_DistinctCount.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAIL,wBAAwB,EACxB,kBAAkB,EAClB,yBAAyB,EACzB,0BAA0B,EAC1B,iBAAiB,EACjB,cAAc,EAEd,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,iCAAiC,EAAE,MAAM,sCAAsC,CAAC;AACzF,OAAO,EAAE,gCAAgC,EAAE,MAAM,oCAAoC,CAAC;AACtF,OAAO,EAAE,6BAA6B,EAAE,MAAM,qCAAqC,CAAC;AACpF,OAAO,EAEL,uCAAuC,GACxC,MAAM,4CAA4C,CAAC;AAEpD,MAAM,OAAO,2CAA4C,SAAQ,6BAA6B;IAC5F,QAAQ,CAAC,qBAAwD;QAC/D,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,sBAAsB,CACpB,qBAAwD;QAExD,IACE,qBAAqB,YAAY,uCAAuC,EACxE;YACA,MAAM,YAAY,GAChB,qBAAqB,CAAC,uBAAuB,CAAC,kBAAkB,CAAC,IAAI;iBAClE,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC;YAC/B,OAAO,CAEH;gBACE,cAAc,CAAC,MAAM;gBACrB,cAAc,CAAC,OAAO;gBACtB,cAAc,CAAC,MAAM;gBACrB,cAAc,CAAC,OAAO;gBACtB,cAAc,CAAC,OAAO;gBACtB,cAAc,CAAC,KAAK;gBACpB,cAAc,CAAC,IAAI;gBACnB,cAAc,CAAC,UAAU;gBACzB,cAAc,CAAC,QAAQ;aAE1B,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,YAAY,YAAY,WAAW,CACrE,CAAC;SACH;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,wBAAwB,CACtB,kBAA0D,EAC1D,YAAoB,EACpB,KAAgB;QAEhB,MAAM,eAAe,GAAG,KAAK,CAAC,sBAAsB,CAClD,yBAAyB,CAAC,GAAG,CAC9B,CAAC;QACF,MAAM,kBAAkB,GAAG,IAAI,wBAAwB,CACrD,0BAA0B,CAAC,iCAAiC,CAAC,QAAQ,CAAC,EACtE,eAAe,CAChB,CAAC;QACF,kBAAkB,CAAC,gBAAgB,CAAC,IAAI,CACtC,IAAI,kBAAkB,CAAC,YAAY,EAAE,eAAe,CAAC,CACtD,CAAC;QACF,MAAM,uBAAuB,GAAG,IAAI,wBAAwB,CAC1D,0BAA0B,CAAC,iCAAiC,CAAC,KAAK,CAAC,EACnE,eAAe,CAChB,CAAC;QACF,uBAAuB,CAAC,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAClE,OAAO,uBAAuB,CAAC;IACjC,CAAC;IAED,yBAAyB,CACvB,UAAoC,EACpC,WAA+B,EAC/B,qBAAwD;QAExD,IACE,iBAAiB,CACf,UAAU,CAAC,YAAY,EACvB,iCAAiC,CAAC,KAAK,CACxC,EACD;YACA,MAAM,oBAAoB,GAAG,IAAI,gCAAgC,CAC/D,qBAAqB,CAAC,eAAe,CAAC,gBAAgB,EACtD,qBAAqB,EACrB,IAAI,CACL,CAAC;YACF,oBAAoB,CAAC,sBAAsB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAE9D,
|
1
|
+
{"version":3,"file":"QueryBuilderAggregateOperator_DistinctCount.js","sourceRoot":"","sources":["../../../../../../src/stores/fetch-structure/projection/aggregation/operators/QueryBuilderAggregateOperator_DistinctCount.ts"],"names":[],"mappings":"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"}
|