@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
@@ -14,157 +14,31 @@
|
|
14
14
|
* limitations under the License.
|
15
15
|
*/
|
16
16
|
|
17
|
+
import { guaranteeNonNullable } from '@finos/legend-shared';
|
17
18
|
import {
|
18
|
-
|
19
|
-
|
20
|
-
guaranteeType,
|
21
|
-
UnsupportedOperationError,
|
22
|
-
} from '@finos/legend-shared';
|
23
|
-
import {
|
24
|
-
type ValueSpecification,
|
25
|
-
Class,
|
26
|
-
Multiplicity,
|
19
|
+
type Class,
|
20
|
+
type Multiplicity,
|
27
21
|
getMilestoneTemporalStereotype,
|
28
|
-
INTERNAL__UnknownValueSpecification,
|
29
|
-
V1_GraphTransformerContextBuilder,
|
30
|
-
V1_serializeRawValueSpecification,
|
31
|
-
V1_transformRawLambda,
|
32
22
|
extractElementNameFromPath,
|
33
23
|
InstanceValue,
|
34
24
|
PackageableElementExplicitReference,
|
35
|
-
CollectionInstanceValue,
|
36
25
|
CORE_PURE_PATH,
|
37
26
|
FunctionType,
|
38
27
|
GenericType,
|
39
28
|
GenericTypeExplicitReference,
|
40
29
|
LambdaFunction,
|
41
|
-
PrimitiveInstanceValue,
|
42
|
-
PRIMITIVE_TYPE,
|
43
|
-
RootGraphFetchTreeInstanceValue,
|
44
30
|
SimpleFunctionExpression,
|
45
31
|
TYPICAL_MULTIPLICITY_TYPE,
|
46
32
|
MILESTONING_STEREOTYPE,
|
47
|
-
AbstractPropertyExpression,
|
48
|
-
DerivedProperty,
|
49
|
-
INTERNAL__PropagatedValue,
|
50
|
-
matchFunctionName,
|
51
33
|
} from '@finos/legend-graph';
|
52
|
-
import { isGraphFetchTreeDataEmpty } from './fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeUtil.js';
|
53
34
|
import type { QueryBuilderState } from './QueryBuilderState.js';
|
54
|
-
import {
|
55
|
-
QueryBuilderDerivationProjectionColumnState,
|
56
|
-
QueryBuilderSimpleProjectionColumnState,
|
57
|
-
} from './fetch-structure/projection/QueryBuilderProjectionColumnState.js';
|
58
|
-
import { buildGenericLambdaFunctionInstanceValue } from './QueryBuilderValueSpecificationHelper.js';
|
59
|
-
import { getDerivedPropertyMilestoningSteoreotype } from './QueryBuilderPropertyEditorState.js';
|
60
|
-
import {
|
61
|
-
functionExpression_setParametersValues,
|
62
|
-
propertyExpression_setParametersValue,
|
63
|
-
buildParametersLetLambdaFunc,
|
64
|
-
} from '@finos/legend-application';
|
35
|
+
import { buildParametersLetLambdaFunc } from '@finos/legend-application';
|
65
36
|
import { QUERY_BUILDER_SUPPORTED_FUNCTIONS } from '../QueryBuilder_Const.js';
|
66
|
-
import {
|
67
|
-
import {
|
68
|
-
import {
|
69
|
-
import { buildFilterExpression } from './filter/QueryBuilderValueSpecificationBuilder.js';
|
70
|
-
|
71
|
-
/**
|
72
|
-
* Checks if the provided property expression match the criteria for default
|
73
|
-
* date propagation so we know whether we need to fill in values for the parameter
|
74
|
-
* or just propgate values from the parent's expression
|
75
|
-
*
|
76
|
-
* NOTE: this takes date propgation into account. See the table below for all
|
77
|
-
* the combination:
|
78
|
-
*
|
79
|
-
* | [source] | | | | |
|
80
|
-
* ----------------------------------------------------------------------
|
81
|
-
* [target] | | NONE | PR_TMP | BI_TMP | BU_TMP |
|
82
|
-
* ----------------------------------------------------------------------
|
83
|
-
* | NONE | N.A. | PRD | PRD,BUD | BUD |
|
84
|
-
* ----------------------------------------------------------------------
|
85
|
-
* | PR_TMP | N.A. | X | PRD,BUD | BUD |
|
86
|
-
* ----------------------------------------------------------------------
|
87
|
-
* | BI_TMP | N.A. | X | X | X |
|
88
|
-
* ----------------------------------------------------------------------
|
89
|
-
* | BU_TMP | N.A. | PRD | PRD,BUD | X |
|
90
|
-
* ----------------------------------------------------------------------
|
91
|
-
*
|
92
|
-
* Annotations:
|
93
|
-
*
|
94
|
-
* [source]: source temporal type
|
95
|
-
* [target]: target temporal type
|
96
|
-
*
|
97
|
-
* PR_TMP : processing temporal
|
98
|
-
* BI_TMP : bitemporal
|
99
|
-
* BU_TMP : business temporal
|
100
|
-
*
|
101
|
-
* X : no default date propagated
|
102
|
-
* PRD : default processing date is propagated
|
103
|
-
* BUD : default business date is propgated
|
104
|
-
*/
|
105
|
-
const isDefaultDatePropagationSupported = (
|
106
|
-
currentPropertyExpression: AbstractPropertyExpression,
|
107
|
-
queryBuilderState: QueryBuilderState,
|
108
|
-
prevPropertyExpression?: AbstractPropertyExpression | undefined,
|
109
|
-
): boolean => {
|
110
|
-
const property = currentPropertyExpression.func;
|
111
|
-
const graph = queryBuilderState.graphManagerState.graph;
|
112
|
-
// Default date propagation is not supported for current expression when the previous property expression is a derived property.
|
113
|
-
if (
|
114
|
-
prevPropertyExpression &&
|
115
|
-
prevPropertyExpression.func instanceof DerivedProperty &&
|
116
|
-
prevPropertyExpression.func._OWNER.derivedProperties.includes(
|
117
|
-
prevPropertyExpression.func,
|
118
|
-
)
|
119
|
-
) {
|
120
|
-
return false;
|
121
|
-
}
|
122
|
-
// Default date propagation is not supported for current expression when the milestonedParameterValues of
|
123
|
-
// the previous property expression doesn't match with the global milestonedParameterValues
|
124
|
-
if (
|
125
|
-
prevPropertyExpression &&
|
126
|
-
prevPropertyExpression.func.genericType.value.rawType instanceof Class
|
127
|
-
) {
|
128
|
-
const milestoningStereotype = getMilestoneTemporalStereotype(
|
129
|
-
prevPropertyExpression.func.genericType.value.rawType,
|
130
|
-
graph,
|
131
|
-
);
|
132
|
-
if (
|
133
|
-
milestoningStereotype &&
|
134
|
-
!prevPropertyExpression.parametersValues
|
135
|
-
.slice(1)
|
136
|
-
.every(
|
137
|
-
(parameterValue) =>
|
138
|
-
parameterValue instanceof INTERNAL__PropagatedValue,
|
139
|
-
)
|
140
|
-
) {
|
141
|
-
return false;
|
142
|
-
}
|
143
|
-
}
|
144
|
-
if (property.genericType.value.rawType instanceof Class) {
|
145
|
-
// the stereotype of source class of current property expression.
|
146
|
-
const sourceStereotype =
|
147
|
-
property instanceof DerivedProperty
|
148
|
-
? getDerivedPropertyMilestoningSteoreotype(property, graph)
|
149
|
-
: undefined;
|
150
|
-
// Default date propagation is always supported if the source is `bitemporal`
|
151
|
-
if (sourceStereotype === MILESTONING_STEREOTYPE.BITEMPORAL) {
|
152
|
-
return true;
|
153
|
-
}
|
154
|
-
// the stereotype (if exists) of the generic type of current property expression.
|
155
|
-
const targetStereotype = getMilestoneTemporalStereotype(
|
156
|
-
property.genericType.value.rawType,
|
157
|
-
graph,
|
158
|
-
);
|
159
|
-
// Default date propagation is supported when stereotype of both source and target matches
|
160
|
-
if (sourceStereotype && targetStereotype) {
|
161
|
-
return sourceStereotype === targetStereotype;
|
162
|
-
}
|
163
|
-
}
|
164
|
-
return false;
|
165
|
-
};
|
37
|
+
import { buildFilterExpression } from './filter/QueryBuilderFilterValueSpecificationBuilder.js';
|
38
|
+
import type { LambdaFunctionBuilderOption } from './QueryBuilderValueSpecificationBuilderHelper.js';
|
39
|
+
import type { QueryBuilderFetchStructureState } from './fetch-structure/QueryBuilderFetchStructureState.js';
|
166
40
|
|
167
|
-
|
41
|
+
const buildGetAllFunction = (
|
168
42
|
_class: Class,
|
169
43
|
multiplicity: Multiplicity,
|
170
44
|
): SimpleFunctionExpression => {
|
@@ -181,119 +55,20 @@ export const buildGetAllFunction = (
|
|
181
55
|
return _func;
|
182
56
|
};
|
183
57
|
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
58
|
+
const buildFetchStructure = (
|
59
|
+
fetchStructureState: QueryBuilderFetchStructureState,
|
60
|
+
lambdaFunction: LambdaFunction,
|
61
|
+
options?: LambdaFunctionBuilderOption,
|
62
|
+
): void => {
|
63
|
+
fetchStructureState.implementation.appendFetchStructure(
|
64
|
+
lambdaFunction,
|
65
|
+
options,
|
192
66
|
);
|
193
|
-
newPropertyExpression.func = propertyExpression.func;
|
194
|
-
newPropertyExpression.parametersValues = propertyExpression.parametersValues;
|
195
|
-
|
196
|
-
let nextExpression: ValueSpecification | undefined;
|
197
|
-
let currentExpression: ValueSpecification | undefined = newPropertyExpression;
|
198
|
-
while (currentExpression instanceof AbstractPropertyExpression) {
|
199
|
-
nextExpression = getNullableFirstElement(
|
200
|
-
currentExpression.parametersValues,
|
201
|
-
);
|
202
|
-
if (nextExpression instanceof AbstractPropertyExpression) {
|
203
|
-
const parameterValue = new AbstractPropertyExpression(
|
204
|
-
'',
|
205
|
-
graph.getTypicalMultiplicity(TYPICAL_MULTIPLICITY_TYPE.ONE),
|
206
|
-
);
|
207
|
-
parameterValue.func = nextExpression.func;
|
208
|
-
parameterValue.parametersValues = nextExpression.parametersValues;
|
209
|
-
nextExpression = parameterValue;
|
210
|
-
currentExpression.parametersValues[0] = parameterValue;
|
211
|
-
}
|
212
|
-
if (currentExpression.func instanceof DerivedProperty) {
|
213
|
-
const parameterValues = currentExpression.parametersValues.slice(1);
|
214
|
-
parameterValues.forEach((parameterValue, index) => {
|
215
|
-
if (parameterValue instanceof INTERNAL__PropagatedValue) {
|
216
|
-
// Replace with argumentless derived property expression only when default date propagation is supported
|
217
|
-
if (
|
218
|
-
isDefaultDatePropagationSupported(
|
219
|
-
guaranteeType(currentExpression, AbstractPropertyExpression),
|
220
|
-
queryBuilderState,
|
221
|
-
nextExpression instanceof AbstractPropertyExpression
|
222
|
-
? nextExpression
|
223
|
-
: undefined,
|
224
|
-
)
|
225
|
-
) {
|
226
|
-
// NOTE: For `bitemporal` property check if the property expression has parameters which are not instance of
|
227
|
-
// `INTERNAL_PropagatedValue` then pass the parameters as user explicitly changed values of either of the parameters.
|
228
|
-
if (
|
229
|
-
(index === 1 &&
|
230
|
-
guaranteeType(currentExpression, AbstractPropertyExpression)
|
231
|
-
.parametersValues.length === 3) ||
|
232
|
-
(index === 0 &&
|
233
|
-
guaranteeType(currentExpression, AbstractPropertyExpression)
|
234
|
-
.parametersValues.length === 3 &&
|
235
|
-
!(
|
236
|
-
guaranteeType(currentExpression, AbstractPropertyExpression)
|
237
|
-
.parametersValues[2] instanceof INTERNAL__PropagatedValue
|
238
|
-
))
|
239
|
-
) {
|
240
|
-
propertyExpression_setParametersValue(
|
241
|
-
guaranteeType(currentExpression, AbstractPropertyExpression),
|
242
|
-
index + 1,
|
243
|
-
parameterValue.getValue(),
|
244
|
-
queryBuilderState.observableContext,
|
245
|
-
);
|
246
|
-
} else {
|
247
|
-
functionExpression_setParametersValues(
|
248
|
-
guaranteeType(currentExpression, AbstractPropertyExpression),
|
249
|
-
[
|
250
|
-
guaranteeNonNullable(
|
251
|
-
guaranteeType(currentExpression, AbstractPropertyExpression)
|
252
|
-
.parametersValues[0],
|
253
|
-
),
|
254
|
-
],
|
255
|
-
queryBuilderState.observableContext,
|
256
|
-
);
|
257
|
-
}
|
258
|
-
} else {
|
259
|
-
propertyExpression_setParametersValue(
|
260
|
-
guaranteeType(currentExpression, AbstractPropertyExpression),
|
261
|
-
index + 1,
|
262
|
-
parameterValue.getValue(),
|
263
|
-
queryBuilderState.observableContext,
|
264
|
-
);
|
265
|
-
}
|
266
|
-
}
|
267
|
-
});
|
268
|
-
}
|
269
|
-
currentExpression = nextExpression;
|
270
|
-
// Take care of chains of subtype (a pattern that is not useful, but we want to support and rectify)
|
271
|
-
// $x.employees->subType(@Person)->subType(@Staff)
|
272
|
-
while (
|
273
|
-
currentExpression instanceof SimpleFunctionExpression &&
|
274
|
-
matchFunctionName(
|
275
|
-
currentExpression.functionName,
|
276
|
-
QUERY_BUILDER_SUPPORTED_FUNCTIONS.SUBTYPE,
|
277
|
-
)
|
278
|
-
) {
|
279
|
-
currentExpression = getNullableFirstElement(
|
280
|
-
currentExpression.parametersValues,
|
281
|
-
);
|
282
|
-
}
|
283
|
-
}
|
284
|
-
return newPropertyExpression;
|
285
67
|
};
|
286
68
|
|
287
69
|
export const buildLambdaFunction = (
|
288
70
|
queryBuilderState: QueryBuilderState,
|
289
|
-
options?:
|
290
|
-
/**
|
291
|
-
* Set queryBuilderState to `true` when we construct query for execution within the app.
|
292
|
-
* queryBuilderState will make the lambda function building process overrides several query values, such as the row limit.
|
293
|
-
*/
|
294
|
-
isBuildingExecutionQuery?: boolean | undefined;
|
295
|
-
keepSourceInformation?: boolean | undefined;
|
296
|
-
},
|
71
|
+
options?: LambdaFunctionBuilderOption,
|
297
72
|
): LambdaFunction => {
|
298
73
|
const _class = guaranteeNonNullable(
|
299
74
|
queryBuilderState.querySetupState._class,
|
@@ -303,9 +78,6 @@ export const buildLambdaFunction = (
|
|
303
78
|
queryBuilderState.graphManagerState.graph.getTypicalMultiplicity(
|
304
79
|
TYPICAL_MULTIPLICITY_TYPE.ONE,
|
305
80
|
);
|
306
|
-
const typeString = queryBuilderState.graphManagerState.graph.getPrimitiveType(
|
307
|
-
PRIMITIVE_TYPE.STRING,
|
308
|
-
);
|
309
81
|
const typeAny = queryBuilderState.graphManagerState.graph.getType(
|
310
82
|
CORE_PURE_PATH.ANY,
|
311
83
|
);
|
@@ -361,7 +133,7 @@ export const buildLambdaFunction = (
|
|
361
133
|
}
|
362
134
|
lambdaFunction.expressionSequence[0] = getAllFunction;
|
363
135
|
|
364
|
-
// build filter
|
136
|
+
// build filter
|
365
137
|
const filterFunction = buildFilterExpression(
|
366
138
|
queryBuilderState.filterState,
|
367
139
|
getAllFunction,
|
@@ -369,345 +141,13 @@ export const buildLambdaFunction = (
|
|
369
141
|
if (filterFunction) {
|
370
142
|
lambdaFunction.expressionSequence[0] = filterFunction;
|
371
143
|
}
|
372
|
-
// build fetch structure
|
373
|
-
switch (queryBuilderState.fetchStructureState.fetchStructureMode) {
|
374
|
-
case FETCH_STRUCTURE_MODE.PROJECTION: {
|
375
|
-
if (
|
376
|
-
queryBuilderState.fetchStructureState.projectionState.aggregationState
|
377
|
-
.columns.length
|
378
|
-
) {
|
379
|
-
// aggregation
|
380
|
-
|
381
|
-
const groupByFunction = new SimpleFunctionExpression(
|
382
|
-
extractElementNameFromPath(
|
383
|
-
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_GROUP_BY,
|
384
|
-
),
|
385
|
-
multiplicityOne,
|
386
|
-
);
|
387
|
-
|
388
|
-
const colLambdas = new CollectionInstanceValue(
|
389
|
-
new Multiplicity(
|
390
|
-
queryBuilderState.fetchStructureState.projectionState.columns
|
391
|
-
.length -
|
392
|
-
queryBuilderState.fetchStructureState.projectionState
|
393
|
-
.aggregationState.columns.length,
|
394
|
-
queryBuilderState.fetchStructureState.projectionState.columns
|
395
|
-
.length -
|
396
|
-
queryBuilderState.fetchStructureState.projectionState
|
397
|
-
.aggregationState.columns.length,
|
398
|
-
),
|
399
|
-
);
|
400
|
-
const aggregateLambdas = new CollectionInstanceValue(
|
401
|
-
new Multiplicity(
|
402
|
-
queryBuilderState.fetchStructureState.projectionState.aggregationState.columns.length,
|
403
|
-
queryBuilderState.fetchStructureState.projectionState.aggregationState.columns.length,
|
404
|
-
),
|
405
|
-
);
|
406
|
-
const colAliases = new CollectionInstanceValue(
|
407
|
-
new Multiplicity(
|
408
|
-
queryBuilderState.fetchStructureState.projectionState.columns.length,
|
409
|
-
queryBuilderState.fetchStructureState.projectionState.columns.length,
|
410
|
-
),
|
411
|
-
);
|
412
|
-
queryBuilderState.fetchStructureState.projectionState.columns.forEach(
|
413
|
-
(projectionColumnState) => {
|
414
|
-
// column alias
|
415
|
-
const colAlias = new PrimitiveInstanceValue(
|
416
|
-
GenericTypeExplicitReference.create(new GenericType(typeString)),
|
417
|
-
multiplicityOne,
|
418
|
-
);
|
419
|
-
colAlias.values.push(projectionColumnState.columnName);
|
420
|
-
colAliases.values.push(colAlias);
|
421
|
-
|
422
|
-
const aggregateColumnState =
|
423
|
-
queryBuilderState.fetchStructureState.projectionState.aggregationState.columns.find(
|
424
|
-
(column) =>
|
425
|
-
column.projectionColumnState === projectionColumnState,
|
426
|
-
);
|
427
|
-
|
428
|
-
// column projection
|
429
|
-
let columnLambda: ValueSpecification;
|
430
|
-
if (
|
431
|
-
projectionColumnState instanceof
|
432
|
-
QueryBuilderSimpleProjectionColumnState
|
433
|
-
) {
|
434
|
-
columnLambda = buildGenericLambdaFunctionInstanceValue(
|
435
|
-
projectionColumnState.lambdaParameterName,
|
436
|
-
[
|
437
|
-
buildPropertyExpressionChain(
|
438
|
-
projectionColumnState.propertyExpressionState
|
439
|
-
.propertyExpression,
|
440
|
-
projectionColumnState.propertyExpressionState
|
441
|
-
.queryBuilderState,
|
442
|
-
),
|
443
|
-
],
|
444
|
-
queryBuilderState.graphManagerState.graph,
|
445
|
-
);
|
446
|
-
} else if (
|
447
|
-
projectionColumnState instanceof
|
448
|
-
QueryBuilderDerivationProjectionColumnState
|
449
|
-
) {
|
450
|
-
columnLambda = new INTERNAL__UnknownValueSpecification(
|
451
|
-
V1_serializeRawValueSpecification(
|
452
|
-
V1_transformRawLambda(
|
453
|
-
projectionColumnState.lambda,
|
454
|
-
new V1_GraphTransformerContextBuilder(
|
455
|
-
// TODO?: do we need to include the plugins here?
|
456
|
-
[],
|
457
|
-
)
|
458
|
-
.withKeepSourceInformationFlag(
|
459
|
-
Boolean(options?.keepSourceInformation),
|
460
|
-
)
|
461
|
-
.build(),
|
462
|
-
),
|
463
|
-
),
|
464
|
-
);
|
465
|
-
} else {
|
466
|
-
throw new UnsupportedOperationError(
|
467
|
-
`Can't build project() column expression: unsupported projection column state`,
|
468
|
-
projectionColumnState,
|
469
|
-
);
|
470
|
-
}
|
471
|
-
|
472
|
-
// column aggregation
|
473
|
-
if (aggregateColumnState) {
|
474
|
-
const aggregateFunctionExpression = new SimpleFunctionExpression(
|
475
|
-
extractElementNameFromPath(
|
476
|
-
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_AGG,
|
477
|
-
),
|
478
|
-
multiplicityOne,
|
479
|
-
);
|
480
|
-
const aggregateLambda = buildGenericLambdaFunctionInstanceValue(
|
481
|
-
aggregateColumnState.lambdaParameterName,
|
482
|
-
[
|
483
|
-
aggregateColumnState.operator.buildAggregateExpressionFromState(
|
484
|
-
aggregateColumnState,
|
485
|
-
),
|
486
|
-
],
|
487
|
-
aggregateColumnState.aggregationState.projectionState
|
488
|
-
.queryBuilderState.graphManagerState.graph,
|
489
|
-
);
|
490
|
-
aggregateFunctionExpression.parametersValues = [
|
491
|
-
columnLambda,
|
492
|
-
aggregateLambda,
|
493
|
-
];
|
494
|
-
|
495
|
-
aggregateLambdas.values.push(aggregateFunctionExpression);
|
496
|
-
} else {
|
497
|
-
colLambdas.values.push(columnLambda);
|
498
|
-
}
|
499
|
-
},
|
500
|
-
);
|
501
|
-
const expression = lambdaFunction.expressionSequence[0];
|
502
|
-
groupByFunction.parametersValues = [
|
503
|
-
expression,
|
504
|
-
colLambdas,
|
505
|
-
aggregateLambdas,
|
506
|
-
colAliases,
|
507
|
-
];
|
508
|
-
lambdaFunction.expressionSequence[0] = groupByFunction;
|
509
|
-
} else if (
|
510
|
-
queryBuilderState.fetchStructureState.projectionState.columns.length
|
511
|
-
) {
|
512
|
-
// projection
|
513
|
-
const projectFunction = new SimpleFunctionExpression(
|
514
|
-
extractElementNameFromPath(
|
515
|
-
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_PROJECT,
|
516
|
-
),
|
517
|
-
multiplicityOne,
|
518
|
-
);
|
519
|
-
const colLambdas = new CollectionInstanceValue(
|
520
|
-
new Multiplicity(
|
521
|
-
queryBuilderState.fetchStructureState.projectionState.columns.length,
|
522
|
-
queryBuilderState.fetchStructureState.projectionState.columns.length,
|
523
|
-
),
|
524
|
-
);
|
525
|
-
const colAliases = new CollectionInstanceValue(
|
526
|
-
new Multiplicity(
|
527
|
-
queryBuilderState.fetchStructureState.projectionState.columns.length,
|
528
|
-
queryBuilderState.fetchStructureState.projectionState.columns.length,
|
529
|
-
),
|
530
|
-
);
|
531
|
-
queryBuilderState.fetchStructureState.projectionState.columns.forEach(
|
532
|
-
(projectionColumnState) => {
|
533
|
-
// column alias
|
534
|
-
const colAlias = new PrimitiveInstanceValue(
|
535
|
-
GenericTypeExplicitReference.create(new GenericType(typeString)),
|
536
|
-
multiplicityOne,
|
537
|
-
);
|
538
|
-
colAlias.values.push(projectionColumnState.columnName);
|
539
|
-
colAliases.values.push(colAlias);
|
540
144
|
|
541
|
-
|
542
|
-
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
columnLambda = buildGenericLambdaFunctionInstanceValue(
|
548
|
-
projectionColumnState.lambdaParameterName,
|
549
|
-
[
|
550
|
-
buildPropertyExpressionChain(
|
551
|
-
projectionColumnState.propertyExpressionState
|
552
|
-
.propertyExpression,
|
553
|
-
projectionColumnState.propertyExpressionState
|
554
|
-
.queryBuilderState,
|
555
|
-
),
|
556
|
-
],
|
557
|
-
queryBuilderState.graphManagerState.graph,
|
558
|
-
);
|
559
|
-
} else if (
|
560
|
-
projectionColumnState instanceof
|
561
|
-
QueryBuilderDerivationProjectionColumnState
|
562
|
-
) {
|
563
|
-
columnLambda = new INTERNAL__UnknownValueSpecification(
|
564
|
-
V1_serializeRawValueSpecification(
|
565
|
-
V1_transformRawLambda(
|
566
|
-
projectionColumnState.lambda,
|
567
|
-
new V1_GraphTransformerContextBuilder(
|
568
|
-
// TODO?: do we need to include the plugins here?
|
569
|
-
[],
|
570
|
-
)
|
571
|
-
.withKeepSourceInformationFlag(
|
572
|
-
Boolean(options?.keepSourceInformation),
|
573
|
-
)
|
574
|
-
.build(),
|
575
|
-
),
|
576
|
-
),
|
577
|
-
);
|
578
|
-
} else {
|
579
|
-
throw new UnsupportedOperationError(
|
580
|
-
`Can't build project() column expression: unsupported projection column state`,
|
581
|
-
projectionColumnState,
|
582
|
-
);
|
583
|
-
}
|
584
|
-
colLambdas.values.push(columnLambda);
|
585
|
-
},
|
586
|
-
);
|
587
|
-
const expression = lambdaFunction.expressionSequence[0];
|
588
|
-
projectFunction.parametersValues = [expression, colLambdas, colAliases];
|
589
|
-
lambdaFunction.expressionSequence[0] = projectFunction;
|
590
|
-
}
|
591
|
-
|
592
|
-
// build post-filter
|
593
|
-
appendPostFilter(
|
594
|
-
queryBuilderState.fetchStructureState.projectionState.postFilterState,
|
595
|
-
lambdaFunction,
|
596
|
-
);
|
597
|
-
|
598
|
-
// build result set modifiers
|
599
|
-
appendResultSetModifiers(
|
600
|
-
queryBuilderState.fetchStructureState.projectionState
|
601
|
-
.resultSetModifierState,
|
602
|
-
lambdaFunction,
|
603
|
-
{
|
604
|
-
overridingLimit: options?.isBuildingExecutionQuery
|
605
|
-
? queryBuilderState.resultState.previewLimit
|
606
|
-
: undefined,
|
607
|
-
},
|
608
|
-
);
|
609
|
-
|
610
|
-
break;
|
611
|
-
}
|
612
|
-
case FETCH_STRUCTURE_MODE.GRAPH_FETCH: {
|
613
|
-
// build fetch-structure
|
614
|
-
if (
|
615
|
-
queryBuilderState.fetchStructureState.graphFetchTreeState.treeData &&
|
616
|
-
!isGraphFetchTreeDataEmpty(
|
617
|
-
queryBuilderState.fetchStructureState.graphFetchTreeState.treeData,
|
618
|
-
)
|
619
|
-
) {
|
620
|
-
const graphFetchInstance = new RootGraphFetchTreeInstanceValue(
|
621
|
-
multiplicityOne,
|
622
|
-
);
|
623
|
-
graphFetchInstance.values = [
|
624
|
-
queryBuilderState.fetchStructureState.graphFetchTreeState.treeData
|
625
|
-
.tree,
|
626
|
-
];
|
627
|
-
const serializeFunction = new SimpleFunctionExpression(
|
628
|
-
extractElementNameFromPath(
|
629
|
-
QUERY_BUILDER_SUPPORTED_FUNCTIONS.SERIALIZE,
|
630
|
-
),
|
631
|
-
multiplicityOne,
|
632
|
-
);
|
633
|
-
const graphFetchFunc = new SimpleFunctionExpression(
|
634
|
-
queryBuilderState.fetchStructureState.graphFetchTreeState.isChecked
|
635
|
-
? extractElementNameFromPath(
|
636
|
-
QUERY_BUILDER_SUPPORTED_FUNCTIONS.GRAPH_FETCH_CHECKED,
|
637
|
-
)
|
638
|
-
: extractElementNameFromPath(
|
639
|
-
QUERY_BUILDER_SUPPORTED_FUNCTIONS.GRAPH_FETCH,
|
640
|
-
),
|
641
|
-
multiplicityOne,
|
642
|
-
);
|
643
|
-
const expression = lambdaFunction.expressionSequence[0];
|
644
|
-
graphFetchFunc.parametersValues = [expression, graphFetchInstance];
|
645
|
-
serializeFunction.parametersValues = [
|
646
|
-
graphFetchFunc,
|
647
|
-
graphFetchInstance,
|
648
|
-
];
|
649
|
-
lambdaFunction.expressionSequence[0] = serializeFunction;
|
650
|
-
}
|
651
|
-
|
652
|
-
// build result set modifier: i.e. preview limit
|
653
|
-
if (options?.isBuildingExecutionQuery) {
|
654
|
-
if (lambdaFunction.expressionSequence.length === 1) {
|
655
|
-
const func = lambdaFunction.expressionSequence[0];
|
656
|
-
if (func instanceof SimpleFunctionExpression) {
|
657
|
-
if (
|
658
|
-
matchFunctionName(
|
659
|
-
func.functionName,
|
660
|
-
QUERY_BUILDER_SUPPORTED_FUNCTIONS.SERIALIZE,
|
661
|
-
)
|
662
|
-
) {
|
663
|
-
// NOTE: we have to separate the handling of `take()` for projection and
|
664
|
-
// graph-fetch as the latter use `meta::pure::functions::collection::take()`
|
665
|
-
// where the former uses `meta::pure::tds::take()`, therefore the placement
|
666
|
-
// in the query are different. Also, note that because of the above distinction,
|
667
|
-
// we won't support using `take()` as result set modifier operations for graph-fetch.
|
668
|
-
// Result set modifier should only be used for projection for now.
|
669
|
-
const limit = new PrimitiveInstanceValue(
|
670
|
-
GenericTypeExplicitReference.create(
|
671
|
-
new GenericType(
|
672
|
-
queryBuilderState.graphManagerState.graph.getPrimitiveType(
|
673
|
-
PRIMITIVE_TYPE.INTEGER,
|
674
|
-
),
|
675
|
-
),
|
676
|
-
),
|
677
|
-
multiplicityOne,
|
678
|
-
);
|
679
|
-
limit.values = [queryBuilderState.resultState.previewLimit];
|
680
|
-
const takeFunction = new SimpleFunctionExpression(
|
681
|
-
extractElementNameFromPath(
|
682
|
-
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TAKE,
|
683
|
-
),
|
684
|
-
multiplicityOne,
|
685
|
-
);
|
686
|
-
|
687
|
-
// NOTE: `take()` does not work on `graphFetch()` or `serialize()` so we will put it
|
688
|
-
// right next to `all()`
|
689
|
-
const serializeFunction = func;
|
690
|
-
const graphFetchFunc = guaranteeType(
|
691
|
-
serializeFunction.parametersValues[0],
|
692
|
-
SimpleFunctionExpression,
|
693
|
-
);
|
694
|
-
const getAllFunc = graphFetchFunc
|
695
|
-
.parametersValues[0] as ValueSpecification;
|
696
|
-
takeFunction.parametersValues[0] = getAllFunc;
|
697
|
-
takeFunction.parametersValues[1] = limit;
|
698
|
-
graphFetchFunc.parametersValues = [
|
699
|
-
takeFunction,
|
700
|
-
graphFetchFunc.parametersValues[1] as ValueSpecification,
|
701
|
-
];
|
702
|
-
}
|
703
|
-
}
|
704
|
-
}
|
705
|
-
}
|
706
|
-
break;
|
707
|
-
}
|
708
|
-
default:
|
709
|
-
break;
|
710
|
-
}
|
145
|
+
// build fetch-structure
|
146
|
+
buildFetchStructure(
|
147
|
+
queryBuilderState.fetchStructureState,
|
148
|
+
lambdaFunction,
|
149
|
+
options,
|
150
|
+
);
|
711
151
|
|
712
152
|
// build parameters
|
713
153
|
if (
|