@finos/legend-query-builder 4.17.100 → 4.18.1
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/__test__.d.ts +1 -0
- package/lib/__test__.d.ts.map +1 -1
- package/lib/__test__.js +1 -0
- package/lib/__test__.js.map +1 -1
- package/lib/components/QueryBuilder.d.ts.map +1 -1
- package/lib/components/QueryBuilder.js +2 -1
- package/lib/components/QueryBuilder.js.map +1 -1
- package/lib/components/QueryBuilderSideBar.d.ts.map +1 -1
- package/lib/components/QueryBuilderSideBar.js +9 -8
- package/lib/components/QueryBuilderSideBar.js.map +1 -1
- package/lib/components/__test-utils__/QueryBuilderComponentTestUtils.d.ts +5 -0
- package/lib/components/__test-utils__/QueryBuilderComponentTestUtils.d.ts.map +1 -1
- package/lib/components/__test-utils__/QueryBuilderComponentTestUtils.js +28 -2
- package/lib/components/__test-utils__/QueryBuilderComponentTestUtils.js.map +1 -1
- package/lib/components/explorer/QueryBuilderExplorerPanel.d.ts.map +1 -1
- package/lib/components/explorer/QueryBuilderExplorerPanel.js +48 -5
- package/lib/components/explorer/QueryBuilderExplorerPanel.js.map +1 -1
- package/lib/components/explorer/QueryBuilderRelationExplorerPanel.d.ts +24 -0
- package/lib/components/explorer/QueryBuilderRelationExplorerPanel.d.ts.map +1 -0
- package/lib/components/explorer/QueryBuilderRelationExplorerPanel.js +202 -0
- package/lib/components/explorer/QueryBuilderRelationExplorerPanel.js.map +1 -0
- package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.js +3 -3
- package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderTDSPanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderTDSPanel.js +25 -6
- package/lib/components/fetch-structure/QueryBuilderTDSPanel.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderTDSWindowPanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderTDSWindowPanel.js +8 -2
- package/lib/components/fetch-structure/QueryBuilderTDSWindowPanel.js.map +1 -1
- package/lib/components/workflows/AccessorQueryBuilder.d.ts +18 -0
- package/lib/components/workflows/AccessorQueryBuilder.d.ts.map +1 -0
- package/lib/components/workflows/AccessorQueryBuilder.js +87 -0
- package/lib/components/workflows/AccessorQueryBuilder.js.map +1 -0
- package/lib/components/workflows/ClassQueryBuilder.js +5 -5
- package/lib/components/workflows/ClassQueryBuilder.js.map +1 -1
- package/lib/components/workflows/DataProductQueryBuilder.d.ts.map +1 -1
- package/lib/components/workflows/DataProductQueryBuilder.js +13 -12
- package/lib/components/workflows/DataProductQueryBuilder.js.map +1 -1
- package/lib/data-access-overview.css +1 -1
- package/lib/graph/QueryBuilderMetaModelConst.d.ts +6 -0
- package/lib/graph/QueryBuilderMetaModelConst.d.ts.map +1 -1
- package/lib/graph/QueryBuilderMetaModelConst.js +6 -0
- package/lib/graph/QueryBuilderMetaModelConst.js.map +1 -1
- package/lib/graph-manager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.js +7 -1
- package/lib/graph-manager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.d.ts +2 -0
- package/lib/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.js +93 -3
- package/lib/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.js.map +1 -1
- package/lib/index.css +2 -2
- package/lib/index.css.map +1 -1
- package/lib/index.d.ts +3 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +3 -1
- package/lib/index.js.map +1 -1
- package/lib/package.json +1 -1
- package/lib/stores/QueryBuilderConfig.d.ts +3 -0
- package/lib/stores/QueryBuilderConfig.d.ts.map +1 -1
- package/lib/stores/QueryBuilderConfig.js +3 -0
- package/lib/stores/QueryBuilderConfig.js.map +1 -1
- package/lib/stores/QueryBuilderResultState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderResultState.js +6 -2
- package/lib/stores/QueryBuilderResultState.js.map +1 -1
- package/lib/stores/QueryBuilderState.d.ts +14 -4
- package/lib/stores/QueryBuilderState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderState.js +41 -13
- package/lib/stores/QueryBuilderState.js.map +1 -1
- package/lib/stores/QueryBuilderStateBuilder.d.ts +2 -1
- package/lib/stores/QueryBuilderStateBuilder.d.ts.map +1 -1
- package/lib/stores/QueryBuilderStateBuilder.js +51 -20
- package/lib/stores/QueryBuilderStateBuilder.js.map +1 -1
- package/lib/stores/QueryBuilderStateHashUtils.d.ts +2 -0
- package/lib/stores/QueryBuilderStateHashUtils.d.ts.map +1 -1
- package/lib/stores/QueryBuilderStateHashUtils.js +2 -0
- package/lib/stores/QueryBuilderStateHashUtils.js.map +1 -1
- package/lib/stores/QueryBuilderTypeaheadHelper.js +6 -6
- package/lib/stores/QueryBuilderTypeaheadHelper.js.map +1 -1
- package/lib/stores/QueryBuilderValueSpecificationBuilder.d.ts +1 -1
- package/lib/stores/QueryBuilderValueSpecificationBuilder.d.ts.map +1 -1
- package/lib/stores/QueryBuilderValueSpecificationBuilder.js +54 -45
- package/lib/stores/QueryBuilderValueSpecificationBuilder.js.map +1 -1
- package/lib/stores/QueryBuilderValueSpecificationHelper.d.ts +1 -1
- package/lib/stores/QueryBuilderValueSpecificationHelper.d.ts.map +1 -1
- package/lib/stores/QueryBuilderValueSpecificationHelper.js +2 -2
- package/lib/stores/QueryBuilderValueSpecificationHelper.js.map +1 -1
- package/lib/stores/__test-utils__/QueryBuilderStateTestUtils.js +1 -1
- package/lib/stores/__test-utils__/QueryBuilderStateTestUtils.js.map +1 -1
- package/lib/stores/__test-utils__/TEST_DATA__QueryBuilder_Accessors.d.ts +374 -0
- package/lib/stores/__test-utils__/TEST_DATA__QueryBuilder_Accessors.d.ts.map +1 -0
- package/lib/stores/__test-utils__/TEST_DATA__QueryBuilder_Accessors.js +625 -0
- package/lib/stores/__test-utils__/TEST_DATA__QueryBuilder_Accessors.js.map +1 -0
- package/lib/stores/explorer/QueryBuilderExplorerState.d.ts +12 -2
- package/lib/stores/explorer/QueryBuilderExplorerState.d.ts.map +1 -1
- package/lib/stores/explorer/QueryBuilderExplorerState.js +12 -2
- package/lib/stores/explorer/QueryBuilderExplorerState.js.map +1 -1
- package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.d.ts +2 -2
- package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.d.ts.map +1 -1
- package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.js.map +1 -1
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.d.ts +2 -2
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.d.ts.map +1 -1
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.js +4 -3
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.js.map +1 -1
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.js +1 -1
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.js.map +1 -1
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSHelper.d.ts +2 -0
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSHelper.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSHelper.js +19 -0
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSHelper.js.map +1 -1
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.d.ts +7 -4
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.js +61 -13
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.js.map +1 -1
- package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderRelationAggregationValueSpecBuilder.js +2 -2
- package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderRelationAggregationValueSpecBuilder.js.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterValueSpecificationBuilder.js +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterValueSpecificationBuilder.js.map +1 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionColumnState.d.ts +16 -3
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionColumnState.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionColumnState.js +102 -24
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionColumnState.js.map +1 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionStateBuilder.d.ts +2 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionStateBuilder.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionStateBuilder.js +16 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionStateBuilder.js.map +1 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.js +11 -9
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.js.map +1 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderRelationProjectValueSpecBuilder.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderRelationProjectValueSpecBuilder.js +12 -3
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderRelationProjectValueSpecBuilder.js.map +1 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderTypedProjectionStateBuilder.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderTypedProjectionStateBuilder.js +16 -12
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderTypedProjectionStateBuilder.js.map +1 -1
- package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowGroupByOperatorLoader.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowGroupByOperatorLoader.js +2 -0
- package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowGroupByOperatorLoader.js.map +1 -1
- package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowState.d.ts +4 -3
- package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowState.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowState.js +19 -9
- package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowState.js.map +1 -1
- package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowStateBuilder.d.ts +1 -0
- package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowStateBuilder.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowStateBuilder.js +83 -5
- package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowStateBuilder.js.map +1 -1
- package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowValueSpecificationBuilder.d.ts +4 -3
- package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowValueSpecificationBuilder.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowValueSpecificationBuilder.js +130 -9
- package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowValueSpecificationBuilder.js.map +1 -1
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator.d.ts +2 -1
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator.js.map +1 -1
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Average.d.ts +1 -0
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Average.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Average.js +3 -0
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Average.js.map +1 -1
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Count.d.ts +1 -0
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Count.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Count.js +3 -0
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Count.js.map +1 -1
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Max.d.ts +1 -0
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Max.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Max.js +3 -0
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Max.js.map +1 -1
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Min.d.ts +1 -0
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Min.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Min.js +3 -0
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Min.js.map +1 -1
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_PercentRank.d.ts +25 -0
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_PercentRank.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_PercentRank.js +54 -0
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_PercentRank.js.map +1 -0
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Sum.d.ts +1 -0
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Sum.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Sum.js +3 -0
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Sum.js.map +1 -1
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_AverageRank.d.ts +1 -0
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_AverageRank.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_AverageRank.js +4 -0
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_AverageRank.js.map +1 -1
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_DenseRank.d.ts +1 -0
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_DenseRank.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_DenseRank.js +3 -0
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_DenseRank.js.map +1 -1
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_Rank.d.ts +1 -0
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_Rank.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_Rank.js +3 -0
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_Rank.js.map +1 -1
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_RowNumber.d.ts +1 -0
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_RowNumber.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_RowNumber.js +3 -0
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_RowNumber.js.map +1 -1
- package/lib/stores/filter/QueryBuilderFilterValueSpecificationBuilder.js +3 -3
- package/lib/stores/filter/QueryBuilderFilterValueSpecificationBuilder.js.map +1 -1
- package/lib/stores/milestoning/QueryBuilderMilestoningState.js +4 -4
- package/lib/stores/milestoning/QueryBuilderMilestoningState.js.map +1 -1
- package/lib/stores/workflows/MappingQueryBuilderState.js +2 -2
- package/lib/stores/workflows/MappingQueryBuilderState.js.map +1 -1
- package/lib/stores/workflows/ServiceQueryBuilderState.js +2 -2
- package/lib/stores/workflows/ServiceQueryBuilderState.js.map +1 -1
- package/lib/stores/workflows/accessor/AccessorQueryBuilderHelper.d.ts +18 -0
- package/lib/stores/workflows/accessor/AccessorQueryBuilderHelper.d.ts.map +1 -0
- package/lib/stores/workflows/accessor/AccessorQueryBuilderHelper.js +32 -0
- package/lib/stores/workflows/accessor/AccessorQueryBuilderHelper.js.map +1 -0
- package/lib/stores/workflows/accessor/AccessorQueryBuilderState.d.ts +58 -0
- package/lib/stores/workflows/accessor/AccessorQueryBuilderState.d.ts.map +1 -0
- package/lib/stores/workflows/accessor/AccessorQueryBuilderState.js +129 -0
- package/lib/stores/workflows/accessor/AccessorQueryBuilderState.js.map +1 -0
- package/lib/stores/workflows/dataProduct/DataProductQueryBuilderState.d.ts +31 -6
- package/lib/stores/workflows/dataProduct/DataProductQueryBuilderState.d.ts.map +1 -1
- package/lib/stores/workflows/dataProduct/DataProductQueryBuilderState.js +164 -17
- package/lib/stores/workflows/dataProduct/DataProductQueryBuilderState.js.map +1 -1
- package/package.json +7 -7
- package/src/__test__.ts +1 -0
- package/src/components/QueryBuilder.tsx +2 -1
- package/src/components/QueryBuilderSideBar.tsx +12 -8
- package/src/components/__test-utils__/QueryBuilderComponentTestUtils.tsx +73 -1
- package/src/components/explorer/QueryBuilderExplorerPanel.tsx +77 -14
- package/src/components/explorer/QueryBuilderRelationExplorerPanel.tsx +536 -0
- package/src/components/fetch-structure/QueryBuilderPostFilterPanel.tsx +1 -0
- package/src/components/fetch-structure/QueryBuilderResultModifierPanel.tsx +3 -3
- package/src/components/fetch-structure/QueryBuilderTDSPanel.tsx +62 -4
- package/src/components/fetch-structure/QueryBuilderTDSWindowPanel.tsx +10 -4
- package/src/components/workflows/AccessorQueryBuilder.tsx +211 -0
- package/src/components/workflows/ClassQueryBuilder.tsx +5 -5
- package/src/components/workflows/DataProductQueryBuilder.tsx +40 -62
- package/src/graph/QueryBuilderMetaModelConst.ts +7 -0
- package/src/graph-manager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.ts +28 -0
- package/src/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.ts +223 -4
- package/src/index.ts +5 -0
- package/src/stores/QueryBuilderConfig.ts +3 -0
- package/src/stores/QueryBuilderResultState.ts +12 -8
- package/src/stores/QueryBuilderState.ts +47 -12
- package/src/stores/QueryBuilderStateBuilder.ts +107 -43
- package/src/stores/QueryBuilderStateHashUtils.ts +2 -0
- package/src/stores/QueryBuilderTypeaheadHelper.ts +6 -6
- package/src/stores/QueryBuilderValueSpecificationBuilder.ts +72 -59
- package/src/stores/QueryBuilderValueSpecificationHelper.ts +5 -3
- package/src/stores/__test-utils__/QueryBuilderStateTestUtils.ts +1 -1
- package/src/stores/__test-utils__/TEST_DATA__QueryBuilder_Accessors.ts +630 -0
- package/src/stores/explorer/QueryBuilderExplorerState.ts +26 -2
- package/src/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.ts +1 -2
- package/src/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.ts +4 -3
- package/src/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.ts +1 -1
- package/src/stores/fetch-structure/tds/QueryBuilderTDSHelper.ts +42 -0
- package/src/stores/fetch-structure/tds/QueryBuilderTDSState.ts +137 -20
- package/src/stores/fetch-structure/tds/aggregation/QueryBuilderRelationAggregationValueSpecBuilder.ts +2 -2
- package/src/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterValueSpecificationBuilder.ts +1 -1
- package/src/stores/fetch-structure/tds/projection/QueryBuilderProjectionColumnState.ts +197 -38
- package/src/stores/fetch-structure/tds/projection/QueryBuilderProjectionStateBuilder.ts +30 -0
- package/src/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.ts +11 -9
- package/src/stores/fetch-structure/tds/projection/QueryBuilderRelationProjectValueSpecBuilder.ts +22 -1
- package/src/stores/fetch-structure/tds/projection/QueryBuilderTypedProjectionStateBuilder.ts +25 -16
- package/src/stores/fetch-structure/tds/window/QueryBuilderWindowGroupByOperatorLoader.ts +2 -0
- package/src/stores/fetch-structure/tds/window/QueryBuilderWindowState.ts +23 -9
- package/src/stores/fetch-structure/tds/window/QueryBuilderWindowStateBuilder.ts +206 -4
- package/src/stores/fetch-structure/tds/window/QueryBuilderWindowValueSpecificationBuilder.ts +250 -12
- package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator.ts +3 -1
- package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Average.ts +4 -0
- package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Count.ts +4 -0
- package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Max.ts +4 -0
- package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Min.ts +4 -0
- package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_PercentRank.ts +57 -0
- package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Sum.ts +4 -0
- package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_AverageRank.ts +5 -0
- package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_DenseRank.ts +4 -0
- package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_Rank.ts +4 -0
- package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_RowNumber.ts +4 -0
- package/src/stores/filter/QueryBuilderFilterValueSpecificationBuilder.ts +3 -3
- package/src/stores/milestoning/QueryBuilderMilestoningState.ts +4 -4
- package/src/stores/workflows/MappingQueryBuilderState.ts +2 -2
- package/src/stores/workflows/ServiceQueryBuilderState.ts +2 -2
- package/src/stores/workflows/accessor/AccessorQueryBuilderHelper.ts +51 -0
- package/src/stores/workflows/accessor/AccessorQueryBuilderState.ts +200 -0
- package/src/stores/workflows/dataProduct/DataProductQueryBuilderState.ts +277 -26
- package/tsconfig.json +6 -0
|
@@ -30,6 +30,8 @@ import {
|
|
|
30
30
|
PrimitiveInstanceValue,
|
|
31
31
|
LambdaFunctionInstanceValue,
|
|
32
32
|
ColSpecInstanceValue,
|
|
33
|
+
type RelationColumn,
|
|
34
|
+
type FunctionExpression,
|
|
33
35
|
} from '@finos/legend-graph';
|
|
34
36
|
import {
|
|
35
37
|
assertNonNullable,
|
|
@@ -56,6 +58,7 @@ import {
|
|
|
56
58
|
import { FETCH_STRUCTURE_IMPLEMENTATION } from '../../QueryBuilderFetchStructureImplementationState.js';
|
|
57
59
|
import {
|
|
58
60
|
QueryBuilderDerivationProjectionColumnState,
|
|
61
|
+
QueryBuilderRelationColumnProjectionColumnState,
|
|
59
62
|
QueryBuilderSimpleProjectionColumnState,
|
|
60
63
|
} from './QueryBuilderProjectionColumnState.js';
|
|
61
64
|
import { QueryBuilderTDSState } from '../QueryBuilderTDSState.js';
|
|
@@ -300,6 +303,33 @@ export const processTDSProjectionColumnPropertyExpression = (
|
|
|
300
303
|
}
|
|
301
304
|
};
|
|
302
305
|
|
|
306
|
+
export const processTDSRelationColumn = (
|
|
307
|
+
parentExpression: FunctionExpression,
|
|
308
|
+
columnName: string | undefined,
|
|
309
|
+
col: RelationColumn,
|
|
310
|
+
queryBuilderState: QueryBuilderState,
|
|
311
|
+
): void => {
|
|
312
|
+
if (
|
|
313
|
+
queryBuilderState.fetchStructureState.implementation instanceof
|
|
314
|
+
QueryBuilderTDSState
|
|
315
|
+
) {
|
|
316
|
+
const tdsState = queryBuilderState.fetchStructureState.implementation;
|
|
317
|
+
const columnState = new QueryBuilderRelationColumnProjectionColumnState(
|
|
318
|
+
tdsState,
|
|
319
|
+
col,
|
|
320
|
+
false,
|
|
321
|
+
);
|
|
322
|
+
tdsState.addColumn(columnState, { skipSorting: true });
|
|
323
|
+
if (columnName) {
|
|
324
|
+
columnState.setColumnName(columnName);
|
|
325
|
+
}
|
|
326
|
+
const parameter = parentExpression.parametersValues[0];
|
|
327
|
+
if (parameter instanceof VariableExpression) {
|
|
328
|
+
columnState.setLambdaParameterName(parameter.name);
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
};
|
|
332
|
+
|
|
303
333
|
export const processTDSProjectionDerivationExpression = (
|
|
304
334
|
value: INTERNAL__UnknownValueSpecification,
|
|
305
335
|
columnName: string | undefined,
|
package/src/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.ts
CHANGED
|
@@ -47,7 +47,7 @@ import {
|
|
|
47
47
|
buildPropertyExpressionChain,
|
|
48
48
|
type LambdaFunctionBuilderOption,
|
|
49
49
|
} from '../../../QueryBuilderValueSpecificationBuilderHelper.js';
|
|
50
|
-
import {
|
|
50
|
+
import { appendWindowFunctionState } from '../window/QueryBuilderWindowValueSpecificationBuilder.js';
|
|
51
51
|
import { appendPostFilter } from '../post-filter/QueryBuilderPostFilterValueSpecificationBuilder.js';
|
|
52
52
|
import { buildRelationProjection } from './QueryBuilderRelationProjectValueSpecBuilder.js';
|
|
53
53
|
import { QueryBuilderAggregateOperator_Wavg } from '../aggregation/operators/QueryBuilderAggregateOperator_Wavg.js';
|
|
@@ -67,7 +67,7 @@ const buildProjectColFunc = (
|
|
|
67
67
|
projectionColumnState instanceof QueryBuilderSimpleProjectionColumnState
|
|
68
68
|
) {
|
|
69
69
|
columnLambda = buildGenericLambdaFunctionInstanceValue(
|
|
70
|
-
projectionColumnState.lambdaParameterName,
|
|
70
|
+
[projectionColumnState.lambdaParameterName],
|
|
71
71
|
[
|
|
72
72
|
buildPropertyExpressionChain(
|
|
73
73
|
projectionColumnState.propertyExpressionState.propertyExpression,
|
|
@@ -172,7 +172,7 @@ export const appendProjection = (
|
|
|
172
172
|
projectionColumnState instanceof QueryBuilderSimpleProjectionColumnState
|
|
173
173
|
) {
|
|
174
174
|
columnLambda = buildGenericLambdaFunctionInstanceValue(
|
|
175
|
-
projectionColumnState.lambdaParameterName,
|
|
175
|
+
[projectionColumnState.lambdaParameterName],
|
|
176
176
|
[
|
|
177
177
|
buildPropertyExpressionChain(
|
|
178
178
|
projectionColumnState.propertyExpressionState.propertyExpression,
|
|
@@ -222,7 +222,7 @@ export const appendProjection = (
|
|
|
222
222
|
extractElementNameFromPath(QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_AGG),
|
|
223
223
|
);
|
|
224
224
|
const aggregateLambda = buildGenericLambdaFunctionInstanceValue(
|
|
225
|
-
aggregateColumnState.lambdaParameterName,
|
|
225
|
+
[aggregateColumnState.lambdaParameterName],
|
|
226
226
|
[
|
|
227
227
|
aggregateColumnState.operator.buildAggregateExpressionFromState(
|
|
228
228
|
aggregateColumnState,
|
|
@@ -242,8 +242,10 @@ export const appendProjection = (
|
|
|
242
242
|
aggregateCalendarLambdaState instanceof SimpleFunctionExpression
|
|
243
243
|
) {
|
|
244
244
|
aggregateCalendarLambda = buildGenericLambdaFunctionInstanceValue(
|
|
245
|
-
|
|
246
|
-
.
|
|
245
|
+
[
|
|
246
|
+
guaranteeNonNullable(aggregateColumnState.calendarFunction)
|
|
247
|
+
.lambdaParameterName,
|
|
248
|
+
],
|
|
247
249
|
[aggregateCalendarLambdaState],
|
|
248
250
|
aggregateColumnState.aggregationState.tdsState.queryBuilderState
|
|
249
251
|
.graphManagerState.graph,
|
|
@@ -295,7 +297,7 @@ export const appendProjection = (
|
|
|
295
297
|
];
|
|
296
298
|
lambdaFunction.expressionSequence[0] = groupByFunction;
|
|
297
299
|
} else if (tdsState.projectionColumns.length) {
|
|
298
|
-
if (!
|
|
300
|
+
if (!queryBuilderState.useRelation) {
|
|
299
301
|
// projection
|
|
300
302
|
const projectFunction = new SimpleFunctionExpression(
|
|
301
303
|
extractElementNameFromPath(
|
|
@@ -348,7 +350,7 @@ export const appendProjection = (
|
|
|
348
350
|
QueryBuilderSimpleProjectionColumnState
|
|
349
351
|
) {
|
|
350
352
|
columnLambda = buildGenericLambdaFunctionInstanceValue(
|
|
351
|
-
projectionColumnState.lambdaParameterName,
|
|
353
|
+
[projectionColumnState.lambdaParameterName],
|
|
352
354
|
[
|
|
353
355
|
buildPropertyExpressionChain(
|
|
354
356
|
projectionColumnState.propertyExpressionState
|
|
@@ -409,7 +411,7 @@ export const appendProjection = (
|
|
|
409
411
|
}
|
|
410
412
|
}
|
|
411
413
|
// build olapGroupBy
|
|
412
|
-
|
|
414
|
+
appendWindowFunctionState(tdsState.windowState, lambdaFunction);
|
|
413
415
|
|
|
414
416
|
// build post-filter
|
|
415
417
|
appendPostFilter(tdsState.postFilterState, lambdaFunction);
|
package/src/stores/fetch-structure/tds/projection/QueryBuilderRelationProjectValueSpecBuilder.ts
CHANGED
|
@@ -31,10 +31,13 @@ import {
|
|
|
31
31
|
Relation,
|
|
32
32
|
RelationColumn,
|
|
33
33
|
RelationType,
|
|
34
|
+
VariableExpression,
|
|
35
|
+
FunctionExpression,
|
|
34
36
|
} from '@finos/legend-graph';
|
|
35
37
|
import { QUERY_BUILDER_SUPPORTED_FUNCTIONS } from '../../../../graph/QueryBuilderMetaModelConst.js';
|
|
36
38
|
import {
|
|
37
39
|
QueryBuilderDerivationProjectionColumnState,
|
|
40
|
+
QueryBuilderRelationColumnProjectionColumnState,
|
|
38
41
|
QueryBuilderSimpleProjectionColumnState,
|
|
39
42
|
} from './QueryBuilderProjectionColumnState.js';
|
|
40
43
|
import type { QueryBuilderTDSState } from '../QueryBuilderTDSState.js';
|
|
@@ -76,7 +79,7 @@ export const buildRelationProjection = (
|
|
|
76
79
|
projectionColumnState instanceof QueryBuilderSimpleProjectionColumnState
|
|
77
80
|
) {
|
|
78
81
|
columnLambda = buildGenericLambdaFunctionInstanceValue(
|
|
79
|
-
projectionColumnState.lambdaParameterName,
|
|
82
|
+
[projectionColumnState.lambdaParameterName],
|
|
80
83
|
[
|
|
81
84
|
buildPropertyExpressionChain(
|
|
82
85
|
projectionColumnState.propertyExpressionState.propertyExpression,
|
|
@@ -87,6 +90,24 @@ export const buildRelationProjection = (
|
|
|
87
90
|
],
|
|
88
91
|
queryBuilderState.graphManagerState.graph,
|
|
89
92
|
);
|
|
93
|
+
} else if (
|
|
94
|
+
projectionColumnState instanceof
|
|
95
|
+
QueryBuilderRelationColumnProjectionColumnState
|
|
96
|
+
) {
|
|
97
|
+
const real = projectionColumnState.column;
|
|
98
|
+
const simple = new FunctionExpression(real.name);
|
|
99
|
+
const variable = new VariableExpression(
|
|
100
|
+
projectionColumnState.lambdaParameterName,
|
|
101
|
+
Multiplicity.ONE,
|
|
102
|
+
undefined,
|
|
103
|
+
);
|
|
104
|
+
simple.func = real;
|
|
105
|
+
simple.parametersValues = [variable];
|
|
106
|
+
columnLambda = buildGenericLambdaFunctionInstanceValue(
|
|
107
|
+
[projectionColumnState.lambdaParameterName],
|
|
108
|
+
[simple],
|
|
109
|
+
queryBuilderState.graphManagerState.graph,
|
|
110
|
+
);
|
|
90
111
|
} else if (
|
|
91
112
|
projectionColumnState instanceof
|
|
92
113
|
QueryBuilderDerivationProjectionColumnState
|
package/src/stores/fetch-structure/tds/projection/QueryBuilderTypedProjectionStateBuilder.ts
CHANGED
|
@@ -19,9 +19,14 @@ import {
|
|
|
19
19
|
SimpleFunctionExpression,
|
|
20
20
|
matchFunctionName,
|
|
21
21
|
ColSpecArrayInstance,
|
|
22
|
+
AccessorInstanceValue,
|
|
22
23
|
} from '@finos/legend-graph';
|
|
23
24
|
import { FETCH_STRUCTURE_IMPLEMENTATION } from '../../QueryBuilderFetchStructureImplementationState.js';
|
|
24
|
-
import {
|
|
25
|
+
import {
|
|
26
|
+
assertTrue,
|
|
27
|
+
assertType,
|
|
28
|
+
guaranteeNonNullable,
|
|
29
|
+
} from '@finos/legend-shared';
|
|
25
30
|
import {
|
|
26
31
|
QUERY_BUILDER_LAMBDA_WRITER_MODE,
|
|
27
32
|
type QueryBuilderState,
|
|
@@ -47,24 +52,28 @@ export const processTypedTDSProjectExpression = (
|
|
|
47
52
|
FETCH_STRUCTURE_IMPLEMENTATION.TABULAR_DATA_STRUCTURE,
|
|
48
53
|
);
|
|
49
54
|
|
|
50
|
-
|
|
51
|
-
const precedingExpression = guaranteeType(
|
|
55
|
+
const _precedingExpression = guaranteeNonNullable(
|
|
52
56
|
expression.parametersValues[0],
|
|
53
|
-
|
|
54
|
-
`Can't process typed project() expression: only support typed project() immediately following an expression`,
|
|
55
|
-
);
|
|
56
|
-
assertTrue(
|
|
57
|
-
matchFunctionName(precedingExpression.functionName, [
|
|
58
|
-
QUERY_BUILDER_SUPPORTED_GET_ALL_FUNCTIONS.GET_ALL,
|
|
59
|
-
QUERY_BUILDER_SUPPORTED_GET_ALL_FUNCTIONS.GET_ALL_VERSIONS,
|
|
60
|
-
QUERY_BUILDER_SUPPORTED_GET_ALL_FUNCTIONS.GET_ALL_VERSIONS_IN_RANGE,
|
|
61
|
-
QUERY_BUILDER_SUPPORTED_FUNCTIONS.FILTER,
|
|
62
|
-
QUERY_BUILDER_SUPPORTED_FUNCTIONS.WATERMARK,
|
|
63
|
-
]),
|
|
64
|
-
`Can't process typed project() expression: only support typed project() immediately following either getAll(), filter(), or forWatermark()`,
|
|
57
|
+
`Can't process typed project() expression: missing preceding expression`,
|
|
65
58
|
);
|
|
59
|
+
if (_precedingExpression instanceof SimpleFunctionExpression) {
|
|
60
|
+
assertTrue(
|
|
61
|
+
matchFunctionName(_precedingExpression.functionName, [
|
|
62
|
+
QUERY_BUILDER_SUPPORTED_GET_ALL_FUNCTIONS.GET_ALL,
|
|
63
|
+
QUERY_BUILDER_SUPPORTED_GET_ALL_FUNCTIONS.GET_ALL_VERSIONS,
|
|
64
|
+
QUERY_BUILDER_SUPPORTED_GET_ALL_FUNCTIONS.GET_ALL_VERSIONS_IN_RANGE,
|
|
65
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.FILTER,
|
|
66
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.WATERMARK,
|
|
67
|
+
]),
|
|
68
|
+
`Can't process typed project() expression: only support typed project() immediately following either getAll(), filter(), or forWatermark()`,
|
|
69
|
+
);
|
|
70
|
+
} else if (!(_precedingExpression instanceof AccessorInstanceValue)) {
|
|
71
|
+
throw new Error(
|
|
72
|
+
`Can't process typed project() expression: the first argument is expected to be either a function expression or a Accessor Instance Value`,
|
|
73
|
+
);
|
|
74
|
+
}
|
|
66
75
|
QueryBuilderValueSpecificationProcessor.process(
|
|
67
|
-
|
|
76
|
+
_precedingExpression,
|
|
68
77
|
parentLambda,
|
|
69
78
|
queryBuilderState,
|
|
70
79
|
);
|
|
@@ -24,6 +24,7 @@ import { QueryBuilderTDS_WindowOperator_Count } from './operators/QueryBuilderTD
|
|
|
24
24
|
import { QueryBuilderTDS_WindowOperator_Max } from './operators/QueryBuilderTDS_WindowOperator_Max.js';
|
|
25
25
|
import { QueryBuilderTDS_WindowOperator_Min } from './operators/QueryBuilderTDS_WindowOperator_Min.js';
|
|
26
26
|
import { QueryBuilderTDS_WindowOperator_Average } from './operators/QueryBuilderTDS_WindowOperator_Average.js';
|
|
27
|
+
import { QueryBuilderTDS_WindowRankOperator_PercentRank } from './operators/QueryBuilderTDS_WindowOperator_PercentRank.js';
|
|
27
28
|
|
|
28
29
|
export const getQueryBuilderCoreWindowOperators =
|
|
29
30
|
(): QueryBuilderTDS_WindowOperator[] => [
|
|
@@ -36,4 +37,5 @@ export const getQueryBuilderCoreWindowOperators =
|
|
|
36
37
|
new QueryBuilderTDS_WindowRankOperator_DenseRank(),
|
|
37
38
|
new QueryBuilderTDS_WindowRankOperator_Rank(),
|
|
38
39
|
new QueryBuilderTDS_WindowRankOperator_RowNumber(),
|
|
40
|
+
new QueryBuilderTDS_WindowRankOperator_PercentRank(),
|
|
39
41
|
];
|
|
@@ -85,7 +85,7 @@ export class WindowGroupByColumnSortByState implements Hashable {
|
|
|
85
85
|
|
|
86
86
|
export abstract class QueryBuilderTDS_WindowOperatorState implements Hashable {
|
|
87
87
|
readonly windowState: QueryBuilderWindowState;
|
|
88
|
-
|
|
88
|
+
lambdaParameterNames: string[] = [DEFAULT_LAMBDA_VARIABLE_NAME];
|
|
89
89
|
operator: QueryBuilderTDS_WindowOperator;
|
|
90
90
|
|
|
91
91
|
constructor(
|
|
@@ -96,8 +96,12 @@ export abstract class QueryBuilderTDS_WindowOperatorState implements Hashable {
|
|
|
96
96
|
this.operator = operator;
|
|
97
97
|
}
|
|
98
98
|
|
|
99
|
-
|
|
100
|
-
this.
|
|
99
|
+
setLambdaParameterNames(paramNames: string[]): void {
|
|
100
|
+
this.lambdaParameterNames = paramNames;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
addParameterName(paramName: string): void {
|
|
104
|
+
this.lambdaParameterNames.push(paramName);
|
|
101
105
|
}
|
|
102
106
|
|
|
103
107
|
setOperator(val: QueryBuilderTDS_WindowOperator): void {
|
|
@@ -107,7 +111,7 @@ export abstract class QueryBuilderTDS_WindowOperatorState implements Hashable {
|
|
|
107
111
|
get hashCode(): string {
|
|
108
112
|
return hashArray([
|
|
109
113
|
QUERY_BUILDER_STATE_HASH_STRUCTURE.TDS_WINDOW_GROUPBY_OPERATION_STATE,
|
|
110
|
-
this.
|
|
114
|
+
hashArray(this.lambdaParameterNames),
|
|
111
115
|
this.operator,
|
|
112
116
|
]);
|
|
113
117
|
}
|
|
@@ -120,7 +124,7 @@ export class QueryBuilderTDS_WindowRankOperatorState extends QueryBuilderTDS_Win
|
|
|
120
124
|
) {
|
|
121
125
|
super(windowState, operator);
|
|
122
126
|
makeObservable(this, {
|
|
123
|
-
|
|
127
|
+
setLambdaParameterNames: action,
|
|
124
128
|
});
|
|
125
129
|
}
|
|
126
130
|
}
|
|
@@ -136,7 +140,7 @@ export class QueryBuilderTDS_WindowAggreationOperatorState extends QueryBuilderT
|
|
|
136
140
|
makeObservable(this, {
|
|
137
141
|
columnState: observable,
|
|
138
142
|
setColumnState: action,
|
|
139
|
-
|
|
143
|
+
setLambdaParameterNames: action,
|
|
140
144
|
});
|
|
141
145
|
this.columnState = columnState;
|
|
142
146
|
}
|
|
@@ -148,7 +152,7 @@ export class QueryBuilderTDS_WindowAggreationOperatorState extends QueryBuilderT
|
|
|
148
152
|
override get hashCode(): string {
|
|
149
153
|
return hashArray([
|
|
150
154
|
QUERY_BUILDER_STATE_HASH_STRUCTURE.TDS_WINDOW_GROUPBY_AGG_OPERATOR_STATE,
|
|
151
|
-
this.
|
|
155
|
+
hashArray(this.lambdaParameterNames),
|
|
152
156
|
this.operator,
|
|
153
157
|
this.columnState.columnName,
|
|
154
158
|
]);
|
|
@@ -446,8 +450,18 @@ export class QueryBuilderWindowState implements Hashable {
|
|
|
446
450
|
this.editColumn = col;
|
|
447
451
|
}
|
|
448
452
|
|
|
449
|
-
findOperator(
|
|
450
|
-
|
|
453
|
+
findOperator(
|
|
454
|
+
func: string,
|
|
455
|
+
typed?: boolean,
|
|
456
|
+
): QueryBuilderTDS_WindowOperator | undefined {
|
|
457
|
+
return this.operators.find((operator) => {
|
|
458
|
+
const operatorFunction = typed
|
|
459
|
+
? operator.relationFunc
|
|
460
|
+
: operator.pureFunc;
|
|
461
|
+
return operatorFunction
|
|
462
|
+
? matchFunctionName(func, operatorFunction)
|
|
463
|
+
: undefined;
|
|
464
|
+
});
|
|
451
465
|
}
|
|
452
466
|
|
|
453
467
|
addWindowColumn(windowCol: QueryBuilderWindowColumnState): void {
|
|
@@ -16,6 +16,10 @@
|
|
|
16
16
|
|
|
17
17
|
import {
|
|
18
18
|
CollectionInstanceValue,
|
|
19
|
+
type ColSpec,
|
|
20
|
+
ColSpecArrayInstance,
|
|
21
|
+
ColSpecInstanceValue,
|
|
22
|
+
FunctionExpression,
|
|
19
23
|
LambdaFunction,
|
|
20
24
|
LambdaFunctionInstanceValue,
|
|
21
25
|
matchFunctionName,
|
|
@@ -29,6 +33,7 @@ import {
|
|
|
29
33
|
guaranteeIsString,
|
|
30
34
|
guaranteeNonNullable,
|
|
31
35
|
guaranteeType,
|
|
36
|
+
UnsupportedOperationError,
|
|
32
37
|
} from '@finos/legend-shared';
|
|
33
38
|
import { QUERY_BUILDER_SUPPORTED_FUNCTIONS } from '../../../../graph/QueryBuilderMetaModelConst.js';
|
|
34
39
|
import type { QueryBuilderState } from '../../../QueryBuilderState.js';
|
|
@@ -36,6 +41,7 @@ import { QueryBuilderValueSpecificationProcessor } from '../../../QueryBuilderSt
|
|
|
36
41
|
import {
|
|
37
42
|
getTDSColumnState,
|
|
38
43
|
getTDSColSortTypeFromFunctionName,
|
|
44
|
+
getRelationSortColumnFromFunctionName,
|
|
39
45
|
} from '../QueryBuilderTDSHelper.js';
|
|
40
46
|
import { QueryBuilderTDSState } from '../QueryBuilderTDSState.js';
|
|
41
47
|
import {
|
|
@@ -45,6 +51,7 @@ import {
|
|
|
45
51
|
QueryBuilderTDS_WindowAggreationOperatorState,
|
|
46
52
|
QueryBuilderTDS_WindowRankOperatorState,
|
|
47
53
|
} from './QueryBuilderWindowState.js';
|
|
54
|
+
import type { QueryBuilderTDSColumnState } from '../QueryBuilderTDSColumnState.js';
|
|
48
55
|
|
|
49
56
|
export const processTDS_OLAPGroupByExpression = (
|
|
50
57
|
expression: SimpleFunctionExpression,
|
|
@@ -179,13 +186,13 @@ export const processTDS_OLAPGroupByExpression = (
|
|
|
179
186
|
operation,
|
|
180
187
|
oppColumnState,
|
|
181
188
|
);
|
|
182
|
-
operatorState.
|
|
189
|
+
operatorState.setLambdaParameterNames([
|
|
183
190
|
guaranteeType(
|
|
184
191
|
operationLambda.functionType.parameters[0],
|
|
185
192
|
VariableExpression,
|
|
186
193
|
`Can't process olapGroupBy() operation lambda: only support olapGroupBy() operation lambda with 1 parameter of type 'VariableExpression'`,
|
|
187
194
|
).name,
|
|
188
|
-
);
|
|
195
|
+
]);
|
|
189
196
|
} else {
|
|
190
197
|
const operationLambda = guaranteeType(
|
|
191
198
|
guaranteeType(olapOperationExpression, LambdaFunctionInstanceValue)
|
|
@@ -209,13 +216,13 @@ export const processTDS_OLAPGroupByExpression = (
|
|
|
209
216
|
tdsState.windowState,
|
|
210
217
|
operation,
|
|
211
218
|
);
|
|
212
|
-
operatorState.
|
|
219
|
+
operatorState.setLambdaParameterNames([
|
|
213
220
|
guaranteeType(
|
|
214
221
|
operationLambda.functionType.parameters[0],
|
|
215
222
|
VariableExpression,
|
|
216
223
|
`Can't process olapGroupBy() operation lambda: only support olapGroupBy() operation lambda with 1 parameter of type 'VariableExpression'`,
|
|
217
224
|
).name,
|
|
218
|
-
);
|
|
225
|
+
]);
|
|
219
226
|
}
|
|
220
227
|
|
|
221
228
|
// main col
|
|
@@ -237,3 +244,198 @@ export const processTDS_OLAPGroupByExpression = (
|
|
|
237
244
|
tdsState.windowState.addWindowColumn(olapGroupByColumnState);
|
|
238
245
|
tdsState.setShowWindowFuncPanel(true);
|
|
239
246
|
};
|
|
247
|
+
|
|
248
|
+
const process_WindowOperatorState = (
|
|
249
|
+
colSpec: ColSpec,
|
|
250
|
+
tdsState: QueryBuilderTDSState,
|
|
251
|
+
): QueryBuilderTDS_WindowOperatorState => {
|
|
252
|
+
if (colSpec.function2) {
|
|
253
|
+
//process function 1
|
|
254
|
+
const function1Lambda = guaranteeType(
|
|
255
|
+
guaranteeType(colSpec.function1, LambdaFunctionInstanceValue).values[0],
|
|
256
|
+
LambdaFunction,
|
|
257
|
+
);
|
|
258
|
+
const function1Column = guaranteeType(
|
|
259
|
+
function1Lambda.expressionSequence[0],
|
|
260
|
+
FunctionExpression,
|
|
261
|
+
`Can't process typed window aggregation: expects function1 to be a Function Expression`,
|
|
262
|
+
);
|
|
263
|
+
const aggColumnState = getTDSColumnState(
|
|
264
|
+
tdsState,
|
|
265
|
+
function1Column.functionName,
|
|
266
|
+
);
|
|
267
|
+
|
|
268
|
+
//process function2
|
|
269
|
+
const aggLambda = guaranteeType(
|
|
270
|
+
guaranteeType(colSpec.function2, LambdaFunctionInstanceValue).values[0],
|
|
271
|
+
LambdaFunction,
|
|
272
|
+
);
|
|
273
|
+
const aggFunctionExp = guaranteeType(
|
|
274
|
+
aggLambda.expressionSequence[0],
|
|
275
|
+
SimpleFunctionExpression,
|
|
276
|
+
);
|
|
277
|
+
|
|
278
|
+
const operation = guaranteeNonNullable(
|
|
279
|
+
tdsState.windowState.findOperator(aggFunctionExp.functionName, true),
|
|
280
|
+
`Operator '${aggFunctionExp.functionName}' not supported yet for typed TDS`,
|
|
281
|
+
);
|
|
282
|
+
|
|
283
|
+
const operatorState = new QueryBuilderTDS_WindowAggreationOperatorState(
|
|
284
|
+
tdsState.windowState,
|
|
285
|
+
operation,
|
|
286
|
+
aggColumnState,
|
|
287
|
+
);
|
|
288
|
+
|
|
289
|
+
//add parameter vlaues
|
|
290
|
+
const lambdaParameters: string[] = [];
|
|
291
|
+
function1Lambda.functionType.parameters.forEach((param) => {
|
|
292
|
+
guaranteeType(param, VariableExpression);
|
|
293
|
+
lambdaParameters.push(param.name);
|
|
294
|
+
});
|
|
295
|
+
const aggLambdaParamName = guaranteeType(
|
|
296
|
+
aggLambda.functionType.parameters[0],
|
|
297
|
+
VariableExpression,
|
|
298
|
+
).name;
|
|
299
|
+
lambdaParameters.push(aggLambdaParamName);
|
|
300
|
+
operatorState.setLambdaParameterNames(lambdaParameters);
|
|
301
|
+
return operatorState;
|
|
302
|
+
} else if (colSpec.function1) {
|
|
303
|
+
//TODO: implement rowNumber as part of rank functions
|
|
304
|
+
const rankLambda = guaranteeType(
|
|
305
|
+
guaranteeType(colSpec.function1, LambdaFunctionInstanceValue).values[0],
|
|
306
|
+
LambdaFunction,
|
|
307
|
+
);
|
|
308
|
+
assertTrue(rankLambda.expressionSequence.length === 1);
|
|
309
|
+
const operationFunctionExp = guaranteeType(
|
|
310
|
+
rankLambda.expressionSequence[0],
|
|
311
|
+
SimpleFunctionExpression,
|
|
312
|
+
);
|
|
313
|
+
|
|
314
|
+
const operation = guaranteeNonNullable(
|
|
315
|
+
tdsState.windowState.findOperator(
|
|
316
|
+
operationFunctionExp.functionName,
|
|
317
|
+
true,
|
|
318
|
+
),
|
|
319
|
+
`Operator '${operationFunctionExp.functionName}' not supported yet for typed TDS`,
|
|
320
|
+
);
|
|
321
|
+
|
|
322
|
+
const operatorState = new QueryBuilderTDS_WindowRankOperatorState(
|
|
323
|
+
tdsState.windowState,
|
|
324
|
+
operation,
|
|
325
|
+
);
|
|
326
|
+
|
|
327
|
+
const operatorParameters: string[] = [];
|
|
328
|
+
rankLambda.functionType.parameters.forEach((param) => {
|
|
329
|
+
guaranteeType(param, VariableExpression);
|
|
330
|
+
operatorParameters.push(param.name);
|
|
331
|
+
});
|
|
332
|
+
operatorState.setLambdaParameterNames(operatorParameters);
|
|
333
|
+
|
|
334
|
+
return operatorState;
|
|
335
|
+
} else {
|
|
336
|
+
throw new UnsupportedOperationError(
|
|
337
|
+
`Only support aggregation and rank operators in extend() expression`,
|
|
338
|
+
);
|
|
339
|
+
}
|
|
340
|
+
};
|
|
341
|
+
|
|
342
|
+
export const processTDS_ExtendExpression = (
|
|
343
|
+
expression: SimpleFunctionExpression,
|
|
344
|
+
queryBuilderState: QueryBuilderState,
|
|
345
|
+
parentLambda: LambdaFunction,
|
|
346
|
+
): void => {
|
|
347
|
+
if (expression.parametersValues.length === 3) {
|
|
348
|
+
const relationExpression = guaranteeType(
|
|
349
|
+
expression.parametersValues[0],
|
|
350
|
+
SimpleFunctionExpression,
|
|
351
|
+
`Can't process extend() expression: only support extend() immediately following an expression`,
|
|
352
|
+
);
|
|
353
|
+
QueryBuilderValueSpecificationProcessor.process(
|
|
354
|
+
relationExpression,
|
|
355
|
+
parentLambda,
|
|
356
|
+
queryBuilderState,
|
|
357
|
+
);
|
|
358
|
+
|
|
359
|
+
const windowExpression = guaranteeType(
|
|
360
|
+
expression.parametersValues[1],
|
|
361
|
+
SimpleFunctionExpression,
|
|
362
|
+
`Can't process extend() expression: expects a window expression as the second parameter`,
|
|
363
|
+
);
|
|
364
|
+
|
|
365
|
+
const tdsState = guaranteeType(
|
|
366
|
+
queryBuilderState.fetchStructureState.implementation,
|
|
367
|
+
QueryBuilderTDSState,
|
|
368
|
+
);
|
|
369
|
+
//TODO: handle over() with ColSpec as the first parameter
|
|
370
|
+
const windowColumnsSpec = guaranteeType(
|
|
371
|
+
windowExpression.parametersValues[0],
|
|
372
|
+
ColSpecArrayInstance,
|
|
373
|
+
`Can't process over(): expects ColSpecArray for window columns`,
|
|
374
|
+
);
|
|
375
|
+
|
|
376
|
+
const windowColSpecArray = guaranteeNonNullable(
|
|
377
|
+
windowColumnsSpec.values[0],
|
|
378
|
+
);
|
|
379
|
+
const windowColumns: QueryBuilderTDSColumnState[] =
|
|
380
|
+
windowColSpecArray.colSpecs.map((colSpec) =>
|
|
381
|
+
getTDSColumnState(tdsState, colSpec.name),
|
|
382
|
+
);
|
|
383
|
+
|
|
384
|
+
let sortByState: WindowGroupByColumnSortByState | undefined;
|
|
385
|
+
if (
|
|
386
|
+
windowExpression.parametersValues[1] instanceof CollectionInstanceValue
|
|
387
|
+
) {
|
|
388
|
+
const sortByExpression = guaranteeType(
|
|
389
|
+
windowExpression.parametersValues[1].values[0],
|
|
390
|
+
SimpleFunctionExpression,
|
|
391
|
+
`Can't process extend sortBy expression: only support function expression of 'ascending' or 'descending'`,
|
|
392
|
+
);
|
|
393
|
+
|
|
394
|
+
const sortByFunctionName = sortByExpression.functionName;
|
|
395
|
+
const colSortType =
|
|
396
|
+
getRelationSortColumnFromFunctionName(sortByFunctionName);
|
|
397
|
+
const colSortVal = guaranteeIsString(
|
|
398
|
+
guaranteeType(
|
|
399
|
+
sortByExpression.parametersValues[0],
|
|
400
|
+
ColSpecInstanceValue,
|
|
401
|
+
'Can`t process extend sort column : extend sort column should be a colspec instance value',
|
|
402
|
+
).values[0]?.name,
|
|
403
|
+
'Can`t process extend sort column: extend sort column should be a string colspec instance value',
|
|
404
|
+
);
|
|
405
|
+
const sortColState = getTDSColumnState(tdsState, colSortVal);
|
|
406
|
+
sortByState = new WindowGroupByColumnSortByState(
|
|
407
|
+
sortColState,
|
|
408
|
+
colSortType,
|
|
409
|
+
);
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
//process third extend() parameter
|
|
413
|
+
const operatorColSpecInstance = guaranteeType(
|
|
414
|
+
expression.parametersValues[2],
|
|
415
|
+
ColSpecArrayInstance,
|
|
416
|
+
`Can't process extend(): expects ColSpecArrayInstance for aggregation columns`,
|
|
417
|
+
);
|
|
418
|
+
const operatorColSpecArray = guaranteeNonNullable(
|
|
419
|
+
operatorColSpecInstance.values[0],
|
|
420
|
+
);
|
|
421
|
+
|
|
422
|
+
operatorColSpecArray.colSpecs.forEach((colSpec) => {
|
|
423
|
+
const operatorState = process_WindowOperatorState(colSpec, tdsState);
|
|
424
|
+
|
|
425
|
+
const windowColumnState = new QueryBuilderWindowColumnState(
|
|
426
|
+
tdsState.windowState,
|
|
427
|
+
windowColumns,
|
|
428
|
+
sortByState,
|
|
429
|
+
operatorState,
|
|
430
|
+
colSpec.name,
|
|
431
|
+
);
|
|
432
|
+
|
|
433
|
+
tdsState.windowState.addWindowColumn(windowColumnState);
|
|
434
|
+
tdsState.setShowWindowFuncPanel(true);
|
|
435
|
+
});
|
|
436
|
+
} else {
|
|
437
|
+
throw new UnsupportedOperationError(
|
|
438
|
+
`Can't build relation extend() expression: extend() is not fully supported yet`,
|
|
439
|
+
);
|
|
440
|
+
}
|
|
441
|
+
};
|