@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.
Files changed (278) hide show
  1. package/lib/__test__.d.ts +1 -0
  2. package/lib/__test__.d.ts.map +1 -1
  3. package/lib/__test__.js +1 -0
  4. package/lib/__test__.js.map +1 -1
  5. package/lib/components/QueryBuilder.d.ts.map +1 -1
  6. package/lib/components/QueryBuilder.js +2 -1
  7. package/lib/components/QueryBuilder.js.map +1 -1
  8. package/lib/components/QueryBuilderSideBar.d.ts.map +1 -1
  9. package/lib/components/QueryBuilderSideBar.js +9 -8
  10. package/lib/components/QueryBuilderSideBar.js.map +1 -1
  11. package/lib/components/__test-utils__/QueryBuilderComponentTestUtils.d.ts +5 -0
  12. package/lib/components/__test-utils__/QueryBuilderComponentTestUtils.d.ts.map +1 -1
  13. package/lib/components/__test-utils__/QueryBuilderComponentTestUtils.js +28 -2
  14. package/lib/components/__test-utils__/QueryBuilderComponentTestUtils.js.map +1 -1
  15. package/lib/components/explorer/QueryBuilderExplorerPanel.d.ts.map +1 -1
  16. package/lib/components/explorer/QueryBuilderExplorerPanel.js +48 -5
  17. package/lib/components/explorer/QueryBuilderExplorerPanel.js.map +1 -1
  18. package/lib/components/explorer/QueryBuilderRelationExplorerPanel.d.ts +24 -0
  19. package/lib/components/explorer/QueryBuilderRelationExplorerPanel.d.ts.map +1 -0
  20. package/lib/components/explorer/QueryBuilderRelationExplorerPanel.js +202 -0
  21. package/lib/components/explorer/QueryBuilderRelationExplorerPanel.js.map +1 -0
  22. package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.d.ts.map +1 -1
  23. package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.js.map +1 -1
  24. package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.js +3 -3
  25. package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.js.map +1 -1
  26. package/lib/components/fetch-structure/QueryBuilderTDSPanel.d.ts.map +1 -1
  27. package/lib/components/fetch-structure/QueryBuilderTDSPanel.js +25 -6
  28. package/lib/components/fetch-structure/QueryBuilderTDSPanel.js.map +1 -1
  29. package/lib/components/fetch-structure/QueryBuilderTDSWindowPanel.d.ts.map +1 -1
  30. package/lib/components/fetch-structure/QueryBuilderTDSWindowPanel.js +8 -2
  31. package/lib/components/fetch-structure/QueryBuilderTDSWindowPanel.js.map +1 -1
  32. package/lib/components/workflows/AccessorQueryBuilder.d.ts +18 -0
  33. package/lib/components/workflows/AccessorQueryBuilder.d.ts.map +1 -0
  34. package/lib/components/workflows/AccessorQueryBuilder.js +87 -0
  35. package/lib/components/workflows/AccessorQueryBuilder.js.map +1 -0
  36. package/lib/components/workflows/ClassQueryBuilder.js +5 -5
  37. package/lib/components/workflows/ClassQueryBuilder.js.map +1 -1
  38. package/lib/components/workflows/DataProductQueryBuilder.d.ts.map +1 -1
  39. package/lib/components/workflows/DataProductQueryBuilder.js +13 -12
  40. package/lib/components/workflows/DataProductQueryBuilder.js.map +1 -1
  41. package/lib/data-access-overview.css +1 -1
  42. package/lib/graph/QueryBuilderMetaModelConst.d.ts +6 -0
  43. package/lib/graph/QueryBuilderMetaModelConst.d.ts.map +1 -1
  44. package/lib/graph/QueryBuilderMetaModelConst.js +6 -0
  45. package/lib/graph/QueryBuilderMetaModelConst.js.map +1 -1
  46. package/lib/graph-manager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.d.ts.map +1 -1
  47. package/lib/graph-manager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.js +7 -1
  48. package/lib/graph-manager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.js.map +1 -1
  49. package/lib/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.d.ts +2 -0
  50. package/lib/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.d.ts.map +1 -1
  51. package/lib/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.js +93 -3
  52. package/lib/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.js.map +1 -1
  53. package/lib/index.css +2 -2
  54. package/lib/index.css.map +1 -1
  55. package/lib/index.d.ts +3 -1
  56. package/lib/index.d.ts.map +1 -1
  57. package/lib/index.js +3 -1
  58. package/lib/index.js.map +1 -1
  59. package/lib/package.json +1 -1
  60. package/lib/stores/QueryBuilderConfig.d.ts +3 -0
  61. package/lib/stores/QueryBuilderConfig.d.ts.map +1 -1
  62. package/lib/stores/QueryBuilderConfig.js +3 -0
  63. package/lib/stores/QueryBuilderConfig.js.map +1 -1
  64. package/lib/stores/QueryBuilderResultState.d.ts.map +1 -1
  65. package/lib/stores/QueryBuilderResultState.js +6 -2
  66. package/lib/stores/QueryBuilderResultState.js.map +1 -1
  67. package/lib/stores/QueryBuilderState.d.ts +14 -4
  68. package/lib/stores/QueryBuilderState.d.ts.map +1 -1
  69. package/lib/stores/QueryBuilderState.js +41 -13
  70. package/lib/stores/QueryBuilderState.js.map +1 -1
  71. package/lib/stores/QueryBuilderStateBuilder.d.ts +2 -1
  72. package/lib/stores/QueryBuilderStateBuilder.d.ts.map +1 -1
  73. package/lib/stores/QueryBuilderStateBuilder.js +51 -20
  74. package/lib/stores/QueryBuilderStateBuilder.js.map +1 -1
  75. package/lib/stores/QueryBuilderStateHashUtils.d.ts +2 -0
  76. package/lib/stores/QueryBuilderStateHashUtils.d.ts.map +1 -1
  77. package/lib/stores/QueryBuilderStateHashUtils.js +2 -0
  78. package/lib/stores/QueryBuilderStateHashUtils.js.map +1 -1
  79. package/lib/stores/QueryBuilderTypeaheadHelper.js +6 -6
  80. package/lib/stores/QueryBuilderTypeaheadHelper.js.map +1 -1
  81. package/lib/stores/QueryBuilderValueSpecificationBuilder.d.ts +1 -1
  82. package/lib/stores/QueryBuilderValueSpecificationBuilder.d.ts.map +1 -1
  83. package/lib/stores/QueryBuilderValueSpecificationBuilder.js +54 -45
  84. package/lib/stores/QueryBuilderValueSpecificationBuilder.js.map +1 -1
  85. package/lib/stores/QueryBuilderValueSpecificationHelper.d.ts +1 -1
  86. package/lib/stores/QueryBuilderValueSpecificationHelper.d.ts.map +1 -1
  87. package/lib/stores/QueryBuilderValueSpecificationHelper.js +2 -2
  88. package/lib/stores/QueryBuilderValueSpecificationHelper.js.map +1 -1
  89. package/lib/stores/__test-utils__/QueryBuilderStateTestUtils.js +1 -1
  90. package/lib/stores/__test-utils__/QueryBuilderStateTestUtils.js.map +1 -1
  91. package/lib/stores/__test-utils__/TEST_DATA__QueryBuilder_Accessors.d.ts +374 -0
  92. package/lib/stores/__test-utils__/TEST_DATA__QueryBuilder_Accessors.d.ts.map +1 -0
  93. package/lib/stores/__test-utils__/TEST_DATA__QueryBuilder_Accessors.js +625 -0
  94. package/lib/stores/__test-utils__/TEST_DATA__QueryBuilder_Accessors.js.map +1 -0
  95. package/lib/stores/explorer/QueryBuilderExplorerState.d.ts +12 -2
  96. package/lib/stores/explorer/QueryBuilderExplorerState.d.ts.map +1 -1
  97. package/lib/stores/explorer/QueryBuilderExplorerState.js +12 -2
  98. package/lib/stores/explorer/QueryBuilderExplorerState.js.map +1 -1
  99. package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.d.ts +2 -2
  100. package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.d.ts.map +1 -1
  101. package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.js.map +1 -1
  102. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.d.ts +2 -2
  103. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.d.ts.map +1 -1
  104. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.js +4 -3
  105. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.js.map +1 -1
  106. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.js +1 -1
  107. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.js.map +1 -1
  108. package/lib/stores/fetch-structure/tds/QueryBuilderTDSHelper.d.ts +2 -0
  109. package/lib/stores/fetch-structure/tds/QueryBuilderTDSHelper.d.ts.map +1 -1
  110. package/lib/stores/fetch-structure/tds/QueryBuilderTDSHelper.js +19 -0
  111. package/lib/stores/fetch-structure/tds/QueryBuilderTDSHelper.js.map +1 -1
  112. package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.d.ts +7 -4
  113. package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.d.ts.map +1 -1
  114. package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.js +61 -13
  115. package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.js.map +1 -1
  116. package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderRelationAggregationValueSpecBuilder.js +2 -2
  117. package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderRelationAggregationValueSpecBuilder.js.map +1 -1
  118. package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterValueSpecificationBuilder.js +1 -1
  119. package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterValueSpecificationBuilder.js.map +1 -1
  120. package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionColumnState.d.ts +16 -3
  121. package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionColumnState.d.ts.map +1 -1
  122. package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionColumnState.js +102 -24
  123. package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionColumnState.js.map +1 -1
  124. package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionStateBuilder.d.ts +2 -1
  125. package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionStateBuilder.d.ts.map +1 -1
  126. package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionStateBuilder.js +16 -1
  127. package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionStateBuilder.js.map +1 -1
  128. package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.d.ts.map +1 -1
  129. package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.js +11 -9
  130. package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.js.map +1 -1
  131. package/lib/stores/fetch-structure/tds/projection/QueryBuilderRelationProjectValueSpecBuilder.d.ts.map +1 -1
  132. package/lib/stores/fetch-structure/tds/projection/QueryBuilderRelationProjectValueSpecBuilder.js +12 -3
  133. package/lib/stores/fetch-structure/tds/projection/QueryBuilderRelationProjectValueSpecBuilder.js.map +1 -1
  134. package/lib/stores/fetch-structure/tds/projection/QueryBuilderTypedProjectionStateBuilder.d.ts.map +1 -1
  135. package/lib/stores/fetch-structure/tds/projection/QueryBuilderTypedProjectionStateBuilder.js +16 -12
  136. package/lib/stores/fetch-structure/tds/projection/QueryBuilderTypedProjectionStateBuilder.js.map +1 -1
  137. package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowGroupByOperatorLoader.d.ts.map +1 -1
  138. package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowGroupByOperatorLoader.js +2 -0
  139. package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowGroupByOperatorLoader.js.map +1 -1
  140. package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowState.d.ts +4 -3
  141. package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowState.d.ts.map +1 -1
  142. package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowState.js +19 -9
  143. package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowState.js.map +1 -1
  144. package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowStateBuilder.d.ts +1 -0
  145. package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowStateBuilder.d.ts.map +1 -1
  146. package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowStateBuilder.js +83 -5
  147. package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowStateBuilder.js.map +1 -1
  148. package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowValueSpecificationBuilder.d.ts +4 -3
  149. package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowValueSpecificationBuilder.d.ts.map +1 -1
  150. package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowValueSpecificationBuilder.js +130 -9
  151. package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowValueSpecificationBuilder.js.map +1 -1
  152. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator.d.ts +2 -1
  153. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator.d.ts.map +1 -1
  154. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator.js.map +1 -1
  155. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Average.d.ts +1 -0
  156. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Average.d.ts.map +1 -1
  157. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Average.js +3 -0
  158. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Average.js.map +1 -1
  159. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Count.d.ts +1 -0
  160. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Count.d.ts.map +1 -1
  161. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Count.js +3 -0
  162. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Count.js.map +1 -1
  163. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Max.d.ts +1 -0
  164. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Max.d.ts.map +1 -1
  165. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Max.js +3 -0
  166. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Max.js.map +1 -1
  167. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Min.d.ts +1 -0
  168. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Min.d.ts.map +1 -1
  169. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Min.js +3 -0
  170. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Min.js.map +1 -1
  171. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_PercentRank.d.ts +25 -0
  172. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_PercentRank.d.ts.map +1 -0
  173. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_PercentRank.js +54 -0
  174. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_PercentRank.js.map +1 -0
  175. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Sum.d.ts +1 -0
  176. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Sum.d.ts.map +1 -1
  177. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Sum.js +3 -0
  178. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Sum.js.map +1 -1
  179. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_AverageRank.d.ts +1 -0
  180. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_AverageRank.d.ts.map +1 -1
  181. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_AverageRank.js +4 -0
  182. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_AverageRank.js.map +1 -1
  183. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_DenseRank.d.ts +1 -0
  184. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_DenseRank.d.ts.map +1 -1
  185. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_DenseRank.js +3 -0
  186. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_DenseRank.js.map +1 -1
  187. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_Rank.d.ts +1 -0
  188. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_Rank.d.ts.map +1 -1
  189. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_Rank.js +3 -0
  190. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_Rank.js.map +1 -1
  191. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_RowNumber.d.ts +1 -0
  192. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_RowNumber.d.ts.map +1 -1
  193. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_RowNumber.js +3 -0
  194. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_RowNumber.js.map +1 -1
  195. package/lib/stores/filter/QueryBuilderFilterValueSpecificationBuilder.js +3 -3
  196. package/lib/stores/filter/QueryBuilderFilterValueSpecificationBuilder.js.map +1 -1
  197. package/lib/stores/milestoning/QueryBuilderMilestoningState.js +4 -4
  198. package/lib/stores/milestoning/QueryBuilderMilestoningState.js.map +1 -1
  199. package/lib/stores/workflows/MappingQueryBuilderState.js +2 -2
  200. package/lib/stores/workflows/MappingQueryBuilderState.js.map +1 -1
  201. package/lib/stores/workflows/ServiceQueryBuilderState.js +2 -2
  202. package/lib/stores/workflows/ServiceQueryBuilderState.js.map +1 -1
  203. package/lib/stores/workflows/accessor/AccessorQueryBuilderHelper.d.ts +18 -0
  204. package/lib/stores/workflows/accessor/AccessorQueryBuilderHelper.d.ts.map +1 -0
  205. package/lib/stores/workflows/accessor/AccessorQueryBuilderHelper.js +32 -0
  206. package/lib/stores/workflows/accessor/AccessorQueryBuilderHelper.js.map +1 -0
  207. package/lib/stores/workflows/accessor/AccessorQueryBuilderState.d.ts +58 -0
  208. package/lib/stores/workflows/accessor/AccessorQueryBuilderState.d.ts.map +1 -0
  209. package/lib/stores/workflows/accessor/AccessorQueryBuilderState.js +129 -0
  210. package/lib/stores/workflows/accessor/AccessorQueryBuilderState.js.map +1 -0
  211. package/lib/stores/workflows/dataProduct/DataProductQueryBuilderState.d.ts +31 -6
  212. package/lib/stores/workflows/dataProduct/DataProductQueryBuilderState.d.ts.map +1 -1
  213. package/lib/stores/workflows/dataProduct/DataProductQueryBuilderState.js +164 -17
  214. package/lib/stores/workflows/dataProduct/DataProductQueryBuilderState.js.map +1 -1
  215. package/package.json +7 -7
  216. package/src/__test__.ts +1 -0
  217. package/src/components/QueryBuilder.tsx +2 -1
  218. package/src/components/QueryBuilderSideBar.tsx +12 -8
  219. package/src/components/__test-utils__/QueryBuilderComponentTestUtils.tsx +73 -1
  220. package/src/components/explorer/QueryBuilderExplorerPanel.tsx +77 -14
  221. package/src/components/explorer/QueryBuilderRelationExplorerPanel.tsx +536 -0
  222. package/src/components/fetch-structure/QueryBuilderPostFilterPanel.tsx +1 -0
  223. package/src/components/fetch-structure/QueryBuilderResultModifierPanel.tsx +3 -3
  224. package/src/components/fetch-structure/QueryBuilderTDSPanel.tsx +62 -4
  225. package/src/components/fetch-structure/QueryBuilderTDSWindowPanel.tsx +10 -4
  226. package/src/components/workflows/AccessorQueryBuilder.tsx +211 -0
  227. package/src/components/workflows/ClassQueryBuilder.tsx +5 -5
  228. package/src/components/workflows/DataProductQueryBuilder.tsx +40 -62
  229. package/src/graph/QueryBuilderMetaModelConst.ts +7 -0
  230. package/src/graph-manager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.ts +28 -0
  231. package/src/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.ts +223 -4
  232. package/src/index.ts +5 -0
  233. package/src/stores/QueryBuilderConfig.ts +3 -0
  234. package/src/stores/QueryBuilderResultState.ts +12 -8
  235. package/src/stores/QueryBuilderState.ts +47 -12
  236. package/src/stores/QueryBuilderStateBuilder.ts +107 -43
  237. package/src/stores/QueryBuilderStateHashUtils.ts +2 -0
  238. package/src/stores/QueryBuilderTypeaheadHelper.ts +6 -6
  239. package/src/stores/QueryBuilderValueSpecificationBuilder.ts +72 -59
  240. package/src/stores/QueryBuilderValueSpecificationHelper.ts +5 -3
  241. package/src/stores/__test-utils__/QueryBuilderStateTestUtils.ts +1 -1
  242. package/src/stores/__test-utils__/TEST_DATA__QueryBuilder_Accessors.ts +630 -0
  243. package/src/stores/explorer/QueryBuilderExplorerState.ts +26 -2
  244. package/src/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.ts +1 -2
  245. package/src/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.ts +4 -3
  246. package/src/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.ts +1 -1
  247. package/src/stores/fetch-structure/tds/QueryBuilderTDSHelper.ts +42 -0
  248. package/src/stores/fetch-structure/tds/QueryBuilderTDSState.ts +137 -20
  249. package/src/stores/fetch-structure/tds/aggregation/QueryBuilderRelationAggregationValueSpecBuilder.ts +2 -2
  250. package/src/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterValueSpecificationBuilder.ts +1 -1
  251. package/src/stores/fetch-structure/tds/projection/QueryBuilderProjectionColumnState.ts +197 -38
  252. package/src/stores/fetch-structure/tds/projection/QueryBuilderProjectionStateBuilder.ts +30 -0
  253. package/src/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.ts +11 -9
  254. package/src/stores/fetch-structure/tds/projection/QueryBuilderRelationProjectValueSpecBuilder.ts +22 -1
  255. package/src/stores/fetch-structure/tds/projection/QueryBuilderTypedProjectionStateBuilder.ts +25 -16
  256. package/src/stores/fetch-structure/tds/window/QueryBuilderWindowGroupByOperatorLoader.ts +2 -0
  257. package/src/stores/fetch-structure/tds/window/QueryBuilderWindowState.ts +23 -9
  258. package/src/stores/fetch-structure/tds/window/QueryBuilderWindowStateBuilder.ts +206 -4
  259. package/src/stores/fetch-structure/tds/window/QueryBuilderWindowValueSpecificationBuilder.ts +250 -12
  260. package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator.ts +3 -1
  261. package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Average.ts +4 -0
  262. package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Count.ts +4 -0
  263. package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Max.ts +4 -0
  264. package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Min.ts +4 -0
  265. package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_PercentRank.ts +57 -0
  266. package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Sum.ts +4 -0
  267. package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_AverageRank.ts +5 -0
  268. package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_DenseRank.ts +4 -0
  269. package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_Rank.ts +4 -0
  270. package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_RowNumber.ts +4 -0
  271. package/src/stores/filter/QueryBuilderFilterValueSpecificationBuilder.ts +3 -3
  272. package/src/stores/milestoning/QueryBuilderMilestoningState.ts +4 -4
  273. package/src/stores/workflows/MappingQueryBuilderState.ts +2 -2
  274. package/src/stores/workflows/ServiceQueryBuilderState.ts +2 -2
  275. package/src/stores/workflows/accessor/AccessorQueryBuilderHelper.ts +51 -0
  276. package/src/stores/workflows/accessor/AccessorQueryBuilderState.ts +200 -0
  277. package/src/stores/workflows/dataProduct/DataProductQueryBuilderState.ts +277 -26
  278. 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,
@@ -47,7 +47,7 @@ import {
47
47
  buildPropertyExpressionChain,
48
48
  type LambdaFunctionBuilderOption,
49
49
  } from '../../../QueryBuilderValueSpecificationBuilderHelper.js';
50
- import { appendOLAPGroupByState } from '../window/QueryBuilderWindowValueSpecificationBuilder.js';
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
- guaranteeNonNullable(aggregateColumnState.calendarFunction)
246
- .lambdaParameterName,
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 (!tdsState.queryBuilderState.isFetchStructureTyped) {
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
- appendOLAPGroupByState(tdsState.windowState, lambdaFunction);
414
+ appendWindowFunctionState(tdsState.windowState, lambdaFunction);
413
415
 
414
416
  // build post-filter
415
417
  appendPostFilter(tdsState.postFilterState, lambdaFunction);
@@ -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
@@ -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 { assertTrue, assertType, guaranteeType } from '@finos/legend-shared';
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
- // check preceding expression
51
- const precedingExpression = guaranteeType(
55
+ const _precedingExpression = guaranteeNonNullable(
52
56
  expression.parametersValues[0],
53
- SimpleFunctionExpression,
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
- precedingExpression,
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
- lambdaParameterName: string = DEFAULT_LAMBDA_VARIABLE_NAME;
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
- setLambdaParameterName(paramName: string): void {
100
- this.lambdaParameterName = paramName;
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.lambdaParameterName,
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
- setLambdaParameterName: action,
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
- setLambdaParameterName: action,
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.lambdaParameterName,
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(func: string): QueryBuilderTDS_WindowOperator | undefined {
450
- return this.operators.find((o) => matchFunctionName(func, o.pureFunc));
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.setLambdaParameterName(
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.setLambdaParameterName(
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
+ };