@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,426 @@
|
|
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
|
+
|
17
|
+
import {
|
18
|
+
type INTERNAL__UnknownValueSpecification,
|
19
|
+
type ValueSpecification,
|
20
|
+
AbstractPropertyExpression,
|
21
|
+
CollectionInstanceValue,
|
22
|
+
DerivedProperty,
|
23
|
+
matchFunctionName,
|
24
|
+
RawLambda,
|
25
|
+
SimpleFunctionExpression,
|
26
|
+
V1_deserializeRawValueSpecification,
|
27
|
+
V1_RawLambda,
|
28
|
+
VariableExpression,
|
29
|
+
} from '@finos/legend-graph';
|
30
|
+
import {
|
31
|
+
assertNonNullable,
|
32
|
+
assertTrue,
|
33
|
+
assertType,
|
34
|
+
guaranteeNonNullable,
|
35
|
+
guaranteeType,
|
36
|
+
isNonNullable,
|
37
|
+
returnUndefOnError,
|
38
|
+
type PlainObject,
|
39
|
+
} from '@finos/legend-shared';
|
40
|
+
import { QUERY_BUILDER_SUPPORTED_FUNCTIONS } from '../../../QueryBuilder_Const.js';
|
41
|
+
import type { QueryBuilderState } from '../../QueryBuilderState.js';
|
42
|
+
import { QueryBuilderValueSpecificationProcessor } from '../../QueryBuilderStateBuilder.js';
|
43
|
+
import {
|
44
|
+
extractNullableNumberFromInstanceValue,
|
45
|
+
extractNullableStringFromInstanceValue,
|
46
|
+
validatePropertyExpressionChain,
|
47
|
+
} from '../../QueryBuilderValueSpecificationHelper.js';
|
48
|
+
import { FETCH_STRUCTURE_IMPLEMENTATION } from '../QueryBuilderFetchStructureImplementationState.js';
|
49
|
+
import {
|
50
|
+
QueryBuilderDerivationProjectionColumnState,
|
51
|
+
QueryBuilderSimpleProjectionColumnState,
|
52
|
+
} from './QueryBuilderProjectionColumnState.js';
|
53
|
+
import { QueryBuilderProjectionState } from './QueryBuilderProjectionState.js';
|
54
|
+
import {
|
55
|
+
COLUMN_SORT_TYPE,
|
56
|
+
SortColumnState,
|
57
|
+
} from './QueryResultSetModifierState.js';
|
58
|
+
|
59
|
+
export const processTDSProjectExpression = (
|
60
|
+
expression: SimpleFunctionExpression,
|
61
|
+
queryBuilderState: QueryBuilderState,
|
62
|
+
): void => {
|
63
|
+
// update fetch-structure
|
64
|
+
queryBuilderState.fetchStructureState.changeImplementation(
|
65
|
+
FETCH_STRUCTURE_IMPLEMENTATION.PROJECTION,
|
66
|
+
);
|
67
|
+
|
68
|
+
// check parameters
|
69
|
+
assertTrue(
|
70
|
+
expression.parametersValues.length === 3,
|
71
|
+
`Can't process project() expression: project() expects 2 arguments`,
|
72
|
+
);
|
73
|
+
|
74
|
+
// check preceding expression
|
75
|
+
const precedingExpression = guaranteeType(
|
76
|
+
expression.parametersValues[0],
|
77
|
+
SimpleFunctionExpression,
|
78
|
+
`Can't process project() expression: only support project() immediately following an expression`,
|
79
|
+
);
|
80
|
+
assertTrue(
|
81
|
+
matchFunctionName(precedingExpression.functionName, [
|
82
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.GET_ALL,
|
83
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.FILTER,
|
84
|
+
]),
|
85
|
+
`Can't process project() expression: only support project() immediately following either getAll() or filter()`,
|
86
|
+
);
|
87
|
+
QueryBuilderValueSpecificationProcessor.process(
|
88
|
+
precedingExpression,
|
89
|
+
queryBuilderState,
|
90
|
+
);
|
91
|
+
|
92
|
+
// check columns
|
93
|
+
const columnLambdas = expression.parametersValues[1];
|
94
|
+
assertType(
|
95
|
+
columnLambdas,
|
96
|
+
CollectionInstanceValue,
|
97
|
+
`Can't process project() expression: project() expects argument #1 to be a collection`,
|
98
|
+
);
|
99
|
+
columnLambdas.values.map((value) =>
|
100
|
+
QueryBuilderValueSpecificationProcessor.processChild(
|
101
|
+
value,
|
102
|
+
expression,
|
103
|
+
queryBuilderState,
|
104
|
+
),
|
105
|
+
);
|
106
|
+
|
107
|
+
// check column aliases
|
108
|
+
const columnAliases = expression.parametersValues[2];
|
109
|
+
assertType(
|
110
|
+
columnAliases,
|
111
|
+
CollectionInstanceValue,
|
112
|
+
`Can't process project() expression: project() expects argument #2 to be a collection`,
|
113
|
+
);
|
114
|
+
assertTrue(
|
115
|
+
columnLambdas.values.length === columnAliases.values.length,
|
116
|
+
`Can't process project() expression: number of aliases does not match the number of columns`,
|
117
|
+
);
|
118
|
+
const aliases = columnAliases.values
|
119
|
+
.map(extractNullableStringFromInstanceValue)
|
120
|
+
.filter(isNonNullable);
|
121
|
+
|
122
|
+
// build state
|
123
|
+
if (
|
124
|
+
queryBuilderState.fetchStructureState.implementation instanceof
|
125
|
+
QueryBuilderProjectionState
|
126
|
+
) {
|
127
|
+
const projectionState =
|
128
|
+
queryBuilderState.fetchStructureState.implementation;
|
129
|
+
projectionState.columns.forEach((column, idx) =>
|
130
|
+
column.setColumnName(aliases[idx] as string),
|
131
|
+
);
|
132
|
+
}
|
133
|
+
};
|
134
|
+
|
135
|
+
export const processTDSProjectionColumnPropertyExpression = (
|
136
|
+
expression: AbstractPropertyExpression,
|
137
|
+
queryBuilderState: QueryBuilderState,
|
138
|
+
): void => {
|
139
|
+
if (
|
140
|
+
queryBuilderState.fetchStructureState.implementation instanceof
|
141
|
+
QueryBuilderProjectionState
|
142
|
+
) {
|
143
|
+
const projectionState =
|
144
|
+
queryBuilderState.fetchStructureState.implementation;
|
145
|
+
// NOTE: we do this before creating the projection state, as we will
|
146
|
+
// auto-fill arguments for derived properties when missing as part of building
|
147
|
+
// the property expression state.
|
148
|
+
let currentPropertyExpression: ValueSpecification = expression;
|
149
|
+
while (currentPropertyExpression instanceof AbstractPropertyExpression) {
|
150
|
+
const propertyExpression = currentPropertyExpression;
|
151
|
+
validatePropertyExpressionChain(
|
152
|
+
currentPropertyExpression,
|
153
|
+
queryBuilderState.graphManagerState.graph,
|
154
|
+
);
|
155
|
+
currentPropertyExpression = guaranteeNonNullable(
|
156
|
+
currentPropertyExpression.parametersValues[0],
|
157
|
+
);
|
158
|
+
// here we just do a simple check to ensure that if we encounter derived properties
|
159
|
+
// the number of parameters and arguments provided match
|
160
|
+
if (propertyExpression.func instanceof DerivedProperty) {
|
161
|
+
assertTrue(
|
162
|
+
(Array.isArray(propertyExpression.func.parameters)
|
163
|
+
? propertyExpression.func.parameters.length
|
164
|
+
: 0) ===
|
165
|
+
propertyExpression.parametersValues.length - 1,
|
166
|
+
`Can't process property expression: derived property '${propertyExpression.func.name}' expects number of provided arguments to match number of parameters`,
|
167
|
+
);
|
168
|
+
}
|
169
|
+
// Take care of chains of subtype (a pattern that is not useful, but we want to support and rectify)
|
170
|
+
// $x.employees->subType(@Person)->subType(@Staff)
|
171
|
+
while (
|
172
|
+
currentPropertyExpression instanceof SimpleFunctionExpression &&
|
173
|
+
matchFunctionName(
|
174
|
+
currentPropertyExpression.functionName,
|
175
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.SUBTYPE,
|
176
|
+
)
|
177
|
+
) {
|
178
|
+
currentPropertyExpression = guaranteeNonNullable(
|
179
|
+
currentPropertyExpression.parametersValues[0],
|
180
|
+
);
|
181
|
+
}
|
182
|
+
}
|
183
|
+
assertType(
|
184
|
+
currentPropertyExpression,
|
185
|
+
VariableExpression,
|
186
|
+
`Can't process property expression: expects expression root to be a variable`,
|
187
|
+
);
|
188
|
+
|
189
|
+
const columnState = new QueryBuilderSimpleProjectionColumnState(
|
190
|
+
projectionState,
|
191
|
+
expression,
|
192
|
+
false,
|
193
|
+
);
|
194
|
+
|
195
|
+
projectionState.addColumn(columnState, { skipSorting: true });
|
196
|
+
|
197
|
+
// NOTE: technically we should set the lambda parameter name when we process
|
198
|
+
// the lambda, not when we process the lambda body like this, but that requires
|
199
|
+
// some setup, so it's easier to do it here. The validation of this should have
|
200
|
+
// already been taken care of by the builder.
|
201
|
+
columnState.setLambdaParameterName(currentPropertyExpression.name);
|
202
|
+
}
|
203
|
+
};
|
204
|
+
|
205
|
+
export const processTDSProjectionDerivationExpression = (
|
206
|
+
value: INTERNAL__UnknownValueSpecification,
|
207
|
+
parentExpression: SimpleFunctionExpression,
|
208
|
+
queryBuilderState: QueryBuilderState,
|
209
|
+
): void => {
|
210
|
+
if (
|
211
|
+
queryBuilderState.fetchStructureState.implementation instanceof
|
212
|
+
QueryBuilderProjectionState
|
213
|
+
) {
|
214
|
+
const projectionState =
|
215
|
+
queryBuilderState.fetchStructureState.implementation;
|
216
|
+
const rawLambdaProtocol = returnUndefOnError(() =>
|
217
|
+
guaranteeType(
|
218
|
+
V1_deserializeRawValueSpecification(
|
219
|
+
value.content as PlainObject<V1_RawLambda>,
|
220
|
+
),
|
221
|
+
V1_RawLambda,
|
222
|
+
),
|
223
|
+
);
|
224
|
+
assertNonNullable(
|
225
|
+
rawLambdaProtocol,
|
226
|
+
`Can't process unknown value: only support ${parentExpression.functionName}() column expression as a lambda`,
|
227
|
+
);
|
228
|
+
|
229
|
+
const columnState = new QueryBuilderDerivationProjectionColumnState(
|
230
|
+
projectionState,
|
231
|
+
new RawLambda(rawLambdaProtocol.parameters, rawLambdaProtocol.body),
|
232
|
+
);
|
233
|
+
projectionState.addColumn(columnState, { skipSorting: true });
|
234
|
+
}
|
235
|
+
};
|
236
|
+
|
237
|
+
export const processTDSTakeExpression = (
|
238
|
+
expression: SimpleFunctionExpression,
|
239
|
+
queryBuilderState: QueryBuilderState,
|
240
|
+
): void => {
|
241
|
+
// check parameters
|
242
|
+
assertTrue(
|
243
|
+
expression.parametersValues.length === 2,
|
244
|
+
`Can't process take() expression: take() expects 1 argument`,
|
245
|
+
);
|
246
|
+
|
247
|
+
// check preceding expression
|
248
|
+
const precedingExpression = guaranteeType(
|
249
|
+
expression.parametersValues[0],
|
250
|
+
SimpleFunctionExpression,
|
251
|
+
`Can't process take() expression: only support take() immediately following an expression`,
|
252
|
+
);
|
253
|
+
|
254
|
+
assertTrue(
|
255
|
+
matchFunctionName(precedingExpression.functionName, [
|
256
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_TAKE,
|
257
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_DISTINCT,
|
258
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_SORT,
|
259
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_PROJECT,
|
260
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_GROUP_BY,
|
261
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_FILTER,
|
262
|
+
]),
|
263
|
+
`Can't process take() expression: only support take() in TDS expression`,
|
264
|
+
);
|
265
|
+
QueryBuilderValueSpecificationProcessor.process(
|
266
|
+
precedingExpression,
|
267
|
+
queryBuilderState,
|
268
|
+
);
|
269
|
+
|
270
|
+
// build state
|
271
|
+
if (
|
272
|
+
queryBuilderState.fetchStructureState.implementation instanceof
|
273
|
+
QueryBuilderProjectionState
|
274
|
+
) {
|
275
|
+
const projectionState =
|
276
|
+
queryBuilderState.fetchStructureState.implementation;
|
277
|
+
const takeValue = extractNullableNumberFromInstanceValue(
|
278
|
+
guaranteeNonNullable(expression.parametersValues[1]),
|
279
|
+
);
|
280
|
+
projectionState.resultSetModifierState.setLimit(takeValue);
|
281
|
+
}
|
282
|
+
};
|
283
|
+
|
284
|
+
export const processTDSDistinctExpression = (
|
285
|
+
expression: SimpleFunctionExpression,
|
286
|
+
queryBuilderState: QueryBuilderState,
|
287
|
+
): void => {
|
288
|
+
// check parameters
|
289
|
+
assertTrue(
|
290
|
+
expression.parametersValues.length === 1,
|
291
|
+
`Can't process disctinct() expression: distinct() expects no parameter`,
|
292
|
+
);
|
293
|
+
|
294
|
+
// check preceding expression
|
295
|
+
const precedingExpression = guaranteeType(
|
296
|
+
expression.parametersValues[0],
|
297
|
+
SimpleFunctionExpression,
|
298
|
+
`Can't process distinct() expression: only support distinct() immediately following an expression`,
|
299
|
+
);
|
300
|
+
assertTrue(
|
301
|
+
matchFunctionName(precedingExpression.functionName, [
|
302
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_TAKE,
|
303
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_DISTINCT,
|
304
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_SORT,
|
305
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_PROJECT,
|
306
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_GROUP_BY,
|
307
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_FILTER,
|
308
|
+
]),
|
309
|
+
`Can't process distinct() expression: only support distinct() in TDS expression`,
|
310
|
+
);
|
311
|
+
QueryBuilderValueSpecificationProcessor.process(
|
312
|
+
precedingExpression,
|
313
|
+
queryBuilderState,
|
314
|
+
);
|
315
|
+
|
316
|
+
// build state
|
317
|
+
if (
|
318
|
+
queryBuilderState.fetchStructureState.implementation instanceof
|
319
|
+
QueryBuilderProjectionState
|
320
|
+
) {
|
321
|
+
const projectionState =
|
322
|
+
queryBuilderState.fetchStructureState.implementation;
|
323
|
+
projectionState.resultSetModifierState.distinct = true;
|
324
|
+
}
|
325
|
+
};
|
326
|
+
|
327
|
+
export const processTDSSortExpression = (
|
328
|
+
expression: SimpleFunctionExpression,
|
329
|
+
queryBuilderState: QueryBuilderState,
|
330
|
+
): void => {
|
331
|
+
// check parameters
|
332
|
+
assertTrue(
|
333
|
+
expression.parametersValues.length === 2,
|
334
|
+
`Can't process sort() expression: sort() expects 1 argument`,
|
335
|
+
);
|
336
|
+
|
337
|
+
// check preceding expression
|
338
|
+
const precedingExpression = guaranteeType(
|
339
|
+
expression.parametersValues[0],
|
340
|
+
SimpleFunctionExpression,
|
341
|
+
`Can't process sort() expression: only support sort() immediately following an expression`,
|
342
|
+
);
|
343
|
+
assertTrue(
|
344
|
+
matchFunctionName(precedingExpression.functionName, [
|
345
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_TAKE,
|
346
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_DISTINCT,
|
347
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_SORT,
|
348
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_PROJECT,
|
349
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_GROUP_BY,
|
350
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_FILTER,
|
351
|
+
]),
|
352
|
+
`Can't process sort() expression: only support sort() in TDS expression`,
|
353
|
+
);
|
354
|
+
QueryBuilderValueSpecificationProcessor.process(
|
355
|
+
precedingExpression,
|
356
|
+
queryBuilderState,
|
357
|
+
);
|
358
|
+
|
359
|
+
// check sort configuration
|
360
|
+
const sortLambdas = expression.parametersValues[1];
|
361
|
+
assertType(
|
362
|
+
sortLambdas,
|
363
|
+
CollectionInstanceValue,
|
364
|
+
`Can't process sort() expression: sort() argument should be a collection`,
|
365
|
+
);
|
366
|
+
sortLambdas.values.map((value) =>
|
367
|
+
QueryBuilderValueSpecificationProcessor.processChild(
|
368
|
+
value,
|
369
|
+
expression,
|
370
|
+
queryBuilderState,
|
371
|
+
),
|
372
|
+
);
|
373
|
+
};
|
374
|
+
|
375
|
+
export const processTDSSortDirectionExpression = (
|
376
|
+
expression: SimpleFunctionExpression,
|
377
|
+
parentExpression: SimpleFunctionExpression | undefined,
|
378
|
+
queryBuilderState: QueryBuilderState,
|
379
|
+
): void => {
|
380
|
+
const functionName = expression.functionName;
|
381
|
+
|
382
|
+
// check parent expression
|
383
|
+
assertTrue(
|
384
|
+
Boolean(
|
385
|
+
parentExpression &&
|
386
|
+
matchFunctionName(
|
387
|
+
parentExpression.functionName,
|
388
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_SORT,
|
389
|
+
),
|
390
|
+
),
|
391
|
+
`Can't process ${functionName}() expression: only support ${functionName}() used within a sort() expression`,
|
392
|
+
);
|
393
|
+
|
394
|
+
// check parameters
|
395
|
+
assertTrue(
|
396
|
+
expression.parametersValues.length === 1,
|
397
|
+
`Can't process ${functionName}() expression: ${functionName}() expects no argument`,
|
398
|
+
);
|
399
|
+
|
400
|
+
// build state
|
401
|
+
if (
|
402
|
+
queryBuilderState.fetchStructureState.implementation instanceof
|
403
|
+
QueryBuilderProjectionState
|
404
|
+
) {
|
405
|
+
const projectionState =
|
406
|
+
queryBuilderState.fetchStructureState.implementation;
|
407
|
+
const sortColumnName = extractNullableStringFromInstanceValue(
|
408
|
+
guaranteeNonNullable(expression.parametersValues[0]),
|
409
|
+
);
|
410
|
+
const queryBuilderProjectionColumnState = projectionState.columns.find(
|
411
|
+
(e) => e.columnName === sortColumnName,
|
412
|
+
);
|
413
|
+
if (queryBuilderProjectionColumnState) {
|
414
|
+
const sortColumnState = new SortColumnState(
|
415
|
+
queryBuilderProjectionColumnState,
|
416
|
+
);
|
417
|
+
sortColumnState.sortType = matchFunctionName(
|
418
|
+
functionName,
|
419
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_ASC,
|
420
|
+
)
|
421
|
+
? COLUMN_SORT_TYPE.ASC
|
422
|
+
: COLUMN_SORT_TYPE.DESC;
|
423
|
+
projectionState.resultSetModifierState.addSortColumn(sortColumnState);
|
424
|
+
}
|
425
|
+
}
|
426
|
+
};
|