@finos/legend-query-builder 4.15.34 → 4.15.35

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 (60) hide show
  1. package/lib/components/QueryBuilder.js +1 -1
  2. package/lib/components/QueryBuilder.js.map +1 -1
  3. package/lib/components/QueryLoader.d.ts.map +1 -1
  4. package/lib/components/QueryLoader.js +34 -30
  5. package/lib/components/QueryLoader.js.map +1 -1
  6. package/lib/components/data-cube/QueryBuilderDataCube.d.ts +2 -2
  7. package/lib/components/data-cube/QueryBuilderDataCube.d.ts.map +1 -1
  8. package/lib/components/data-cube/QueryBuilderDataCube.js +2 -2
  9. package/lib/components/data-cube/QueryBuilderDataCube.js.map +1 -1
  10. package/lib/components/result/QueryBuilderResultPanel.d.ts.map +1 -1
  11. package/lib/components/result/QueryBuilderResultPanel.js +5 -4
  12. package/lib/components/result/QueryBuilderResultPanel.js.map +1 -1
  13. package/lib/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.d.ts.map +1 -1
  14. package/lib/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.js +4 -4
  15. package/lib/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.js.map +1 -1
  16. package/lib/index.css +1 -1
  17. package/lib/index.d.ts +1 -0
  18. package/lib/index.d.ts.map +1 -1
  19. package/lib/index.js +1 -0
  20. package/lib/index.js.map +1 -1
  21. package/lib/package.json +1 -1
  22. package/lib/stores/QueryBuilderState.d.ts +4 -4
  23. package/lib/stores/QueryBuilderState.d.ts.map +1 -1
  24. package/lib/stores/QueryBuilderState.js +8 -8
  25. package/lib/stores/QueryBuilderState.js.map +1 -1
  26. package/lib/stores/QueryLoaderState.d.ts +4 -4
  27. package/lib/stores/QueryLoaderState.d.ts.map +1 -1
  28. package/lib/stores/QueryLoaderState.js +12 -12
  29. package/lib/stores/QueryLoaderState.js.map +1 -1
  30. package/lib/stores/data-cube/QueryBuilderDataCubeEngine.d.ts +7 -7
  31. package/lib/stores/data-cube/QueryBuilderDataCubeEngine.d.ts.map +1 -1
  32. package/lib/stores/data-cube/QueryBuilderDataCubeEngine.js +14 -11
  33. package/lib/stores/data-cube/QueryBuilderDataCubeEngine.js.map +1 -1
  34. package/lib/stores/data-cube/{QueryBuilderDataCubeEngineHelper.d.ts → QueryBuilderDataCubeHelper.d.ts} +3 -3
  35. package/lib/stores/data-cube/QueryBuilderDataCubeHelper.d.ts.map +1 -0
  36. package/lib/stores/data-cube/{QueryBuilderDataCubeEngineHelper.js → QueryBuilderDataCubeHelper.js} +10 -6
  37. package/lib/stores/data-cube/QueryBuilderDataCubeHelper.js.map +1 -0
  38. package/lib/stores/data-cube/QueryBuilderDataCubeViewerState.d.ts +23 -0
  39. package/lib/stores/data-cube/QueryBuilderDataCubeViewerState.d.ts.map +1 -0
  40. package/lib/stores/data-cube/QueryBuilderDataCubeViewerState.js +24 -0
  41. package/lib/stores/data-cube/QueryBuilderDataCubeViewerState.js.map +1 -0
  42. package/lib/stores/fetch-structure/tds/projection/QueryBuilderRelationProjectValueSpecBuidler.d.ts.map +1 -1
  43. package/lib/stores/fetch-structure/tds/projection/QueryBuilderRelationProjectValueSpecBuidler.js +4 -4
  44. package/lib/stores/fetch-structure/tds/projection/QueryBuilderRelationProjectValueSpecBuidler.js.map +1 -1
  45. package/package.json +10 -10
  46. package/src/components/QueryBuilder.tsx +3 -3
  47. package/src/components/QueryLoader.tsx +41 -38
  48. package/src/components/data-cube/QueryBuilderDataCube.tsx +4 -4
  49. package/src/components/result/QueryBuilderResultPanel.tsx +6 -8
  50. package/src/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.ts +6 -8
  51. package/src/index.ts +1 -0
  52. package/src/stores/QueryBuilderState.ts +13 -9
  53. package/src/stores/QueryLoaderState.ts +15 -17
  54. package/src/stores/data-cube/QueryBuilderDataCubeEngine.ts +25 -18
  55. package/src/stores/data-cube/{QueryBuilderDataCubeEngineHelper.ts → QueryBuilderDataCubeHelper.ts} +13 -9
  56. package/src/stores/data-cube/QueryBuilderDataCubeViewerState.ts +28 -0
  57. package/src/stores/fetch-structure/tds/projection/QueryBuilderRelationProjectValueSpecBuidler.ts +6 -9
  58. package/tsconfig.json +2 -1
  59. package/lib/stores/data-cube/QueryBuilderDataCubeEngineHelper.d.ts.map +0 -1
  60. package/lib/stores/data-cube/QueryBuilderDataCubeEngineHelper.js.map +0 -1
@@ -63,10 +63,10 @@ import {
63
63
  ColSpecArrayInstance,
64
64
  ColSpecArray,
65
65
  ColSpec,
66
- Relation_RelationType,
67
- Relation_RelationalColumn,
66
+ RelationType,
67
+ RelationColumn,
68
68
  getValueSpecificationReturnType,
69
- Relation_Relation,
69
+ Relation,
70
70
  } from '@finos/legend-graph';
71
71
  import {
72
72
  QUERY_BUILDER_PURE_PATH,
@@ -663,7 +663,7 @@ const V1_buildTypedProjectFunctionExpression = (
663
663
  const processedExpression = new ColSpecArrayInstance(Multiplicity.ONE);
664
664
  const processedColSpecArray = new ColSpecArray();
665
665
  processedExpression.values = [processedColSpecArray];
666
- const relationType = new Relation_RelationType(Relation_RelationType.ID);
666
+ const relationType = new RelationType(RelationType.ID);
667
667
  processedColSpecArray.colSpecs = specArray.colSpecs.map((colSpec) => {
668
668
  const pColSpec = new ColSpec();
669
669
  let lambda: ValueSpecification;
@@ -691,9 +691,7 @@ const V1_buildTypedProjectFunctionExpression = (
691
691
  pColSpec.name = colSpec.name;
692
692
  const returnType = getValueSpecificationReturnType(lambda);
693
693
  if (returnType) {
694
- relationType.columns.push(
695
- new Relation_RelationalColumn(colSpec.name, returnType),
696
- );
694
+ relationType.columns.push(new RelationColumn(colSpec.name, returnType));
697
695
  } else {
698
696
  throw new UnsupportedOperationError(
699
697
  'Unable to get return type for current lambda',
@@ -707,7 +705,7 @@ const V1_buildTypedProjectFunctionExpression = (
707
705
  functionName,
708
706
  compileContext,
709
707
  );
710
- const relationGenericType = new GenericType(Relation_Relation.INSTANCE);
708
+ const relationGenericType = new GenericType(Relation.INSTANCE);
711
709
  const relationTypeGenericType = new GenericType(relationType);
712
710
  relationGenericType.typeArguments = [
713
711
  GenericTypeExplicitReference.create(relationTypeGenericType),
package/src/index.ts CHANGED
@@ -133,3 +133,4 @@ export * from './stores/QueryBuilderValueSpecificationHelper.js';
133
133
  export * from './stores/filter/QueryBuilderFilterState.js';
134
134
  export * from './stores/filter/QueryBuilderFilterStateBuilder.js';
135
135
  export * from './stores/data-cube/QueryBuilderDataCubeEngine.js';
136
+ export * from './stores/data-cube/QueryBuilderDataCubeViewerState.js';
@@ -112,8 +112,8 @@ import { QueryBuilderChangeHistoryState } from './QueryBuilderChangeHistoryState
112
112
  import { type QueryBuilderWorkflowState } from './query-workflow/QueryBuilderWorkFlowState.js';
113
113
  import { type QueryChatState } from './QueryChatState.js';
114
114
  import type { QueryBuilder_LegendApplicationPlugin_Extension } from './QueryBuilder_LegendApplicationPlugin_Extension.js';
115
- import type { QueryBuilderDataCubeEngine } from './data-cube/QueryBuilderDataCubeEngine.js';
116
- import { createDataCubeEngineFromQueryBuilder } from './data-cube/QueryBuilderDataCubeEngineHelper.js';
115
+ import { createDataCubeViewerStateFromQueryBuilder } from './data-cube/QueryBuilderDataCubeHelper.js';
116
+ import type { QueryBuilderDataCubeViewerState } from './data-cube/QueryBuilderDataCubeViewerState.js';
117
117
 
118
118
  // eslint-disable-next-line @typescript-eslint/no-empty-object-type
119
119
  export interface QueryableSourceInfo {}
@@ -166,7 +166,7 @@ export abstract class QueryBuilderState implements CommandRegistrar {
166
166
  isCheckingEntitlments = false;
167
167
  isCalendarEnabled = false;
168
168
  isLocalModeEnabled = false;
169
- dataCubeEngine: QueryBuilderDataCubeEngine | undefined;
169
+ dataCubeViewerState: QueryBuilderDataCubeViewerState | undefined;
170
170
  INTERNAL__enableInitializingDefaultSimpleExpressionValue = false;
171
171
 
172
172
  lambdaWriteMode = QUERY_BUILDER_LAMBDA_WRITER_MODE.STANDARD;
@@ -219,7 +219,7 @@ export abstract class QueryBuilderState implements CommandRegistrar {
219
219
  queryChatState: observable,
220
220
  isQueryChatOpened: observable,
221
221
  isLocalModeEnabled: observable,
222
- dataCubeEngine: observable,
222
+ dataCubeViewerState: observable,
223
223
  getAllFunction: observable,
224
224
  lambdaWriteMode: observable,
225
225
  INTERNAL__enableInitializingDefaultSimpleExpressionValue: observable,
@@ -233,7 +233,7 @@ export abstract class QueryBuilderState implements CommandRegistrar {
233
233
  setShowParametersPanel: action,
234
234
  setIsEditingWatermark: action,
235
235
  setIsCalendarEnabled: action,
236
- setDataCubeEngine: action,
236
+ setDataCubeViewerState: action,
237
237
  openDataCubeEngine: action,
238
238
  setIsCheckingEntitlments: action,
239
239
  setClass: action,
@@ -417,8 +417,10 @@ export abstract class QueryBuilderState implements CommandRegistrar {
417
417
  this.isLocalModeEnabled = val;
418
418
  }
419
419
 
420
- setDataCubeEngine(val: QueryBuilderDataCubeEngine | undefined): void {
421
- this.dataCubeEngine = val;
420
+ setDataCubeViewerState(
421
+ val: QueryBuilderDataCubeViewerState | undefined,
422
+ ): void {
423
+ this.dataCubeViewerState = val;
422
424
  }
423
425
 
424
426
  setInternalize(val: QueryBuilderInternalizeState | undefined): void {
@@ -471,9 +473,11 @@ export abstract class QueryBuilderState implements CommandRegistrar {
471
473
  return !this.unsupportedQueryState.rawLambda;
472
474
  }
473
475
 
474
- openDataCubeEngine(): void {
476
+ async openDataCubeEngine() {
475
477
  try {
476
- this.setDataCubeEngine(createDataCubeEngineFromQueryBuilder(this));
478
+ this.setDataCubeViewerState(
479
+ await createDataCubeViewerStateFromQueryBuilder(this),
480
+ );
477
481
  } catch (error) {
478
482
  assertErrorThrown(error);
479
483
  this.applicationStore.notificationService.notifyError(
@@ -21,7 +21,7 @@ import {
21
21
  import {
22
22
  type QueryInfo,
23
23
  type LightQuery,
24
- type BasicGraphManagerState,
24
+ type AbstractPureGraphManager,
25
25
  type Query,
26
26
  type RawLambda,
27
27
  QuerySearchSpecification,
@@ -56,7 +56,7 @@ export type SortByOption = { label: SORT_BY_OPTIONS; value: SORT_BY_OPTIONS };
56
56
 
57
57
  export class QueryLoaderState {
58
58
  readonly applicationStore: GenericLegendApplicationStore;
59
- readonly graphManagerState: BasicGraphManagerState;
59
+ readonly graphManager: AbstractPureGraphManager;
60
60
 
61
61
  readonly searchQueriesState = ActionState.create();
62
62
  readonly renameQueryState = ActionState.create();
@@ -86,7 +86,7 @@ export class QueryLoaderState {
86
86
  extraFilterOptions: LoadQueryFilterOption[] = [];
87
87
  extraQueryFilterOptionsRelatedToTemplateQuery: string[] = [];
88
88
  queries: LightQuery[] = [];
89
- curatedTemplateQuerySepcifications: CuratedTemplateQuerySpecification[] = [];
89
+ curatedTemplateQuerySpecifications: CuratedTemplateQuerySpecification[] = [];
90
90
 
91
91
  isQueryLoaderDialogOpen = false;
92
92
  isCuratedTemplateToggled = false;
@@ -97,7 +97,7 @@ export class QueryLoaderState {
97
97
 
98
98
  constructor(
99
99
  applicationStore: GenericLegendApplicationStore,
100
- graphManagerState: BasicGraphManagerState,
100
+ graphManager: AbstractPureGraphManager,
101
101
  options: {
102
102
  decorateSearchSpecification?:
103
103
  | ((val: QuerySearchSpecification) => QuerySearchSpecification)
@@ -108,7 +108,6 @@ export class QueryLoaderState {
108
108
  generateDefaultQueriesSummaryText?:
109
109
  | ((queries: LightQuery[]) => string)
110
110
  | undefined;
111
-
112
111
  isReadOnly?: boolean | undefined;
113
112
  onQueryRenamed?: ((query: LightQuery) => void) | undefined;
114
113
  onQueryDeleted?: ((query: string) => void) | undefined;
@@ -124,7 +123,7 @@ export class QueryLoaderState {
124
123
  showPreviewViewer: observable,
125
124
  searchText: observable,
126
125
  isCuratedTemplateToggled: observable,
127
- curatedTemplateQuerySepcifications: observable,
126
+ curatedTemplateQuerySpecifications: observable,
128
127
  sortBy: observable,
129
128
  setSortBy: action,
130
129
  setSearchText: action,
@@ -141,7 +140,7 @@ export class QueryLoaderState {
141
140
  });
142
141
 
143
142
  this.applicationStore = applicationStore;
144
- this.graphManagerState = graphManagerState;
143
+ this.graphManager = graphManager;
145
144
 
146
145
  this.loadQuery = options.loadQuery;
147
146
  this.fetchDefaultQueries = options.fetchDefaultQueries;
@@ -237,7 +236,7 @@ export class QueryLoaderState {
237
236
  extraFilters.forEach(
238
237
  (filter) => filter && this.extraFilters.set(filter, false),
239
238
  );
240
- this.curatedTemplateQuerySepcifications =
239
+ this.curatedTemplateQuerySpecifications =
241
240
  this.applicationStore.pluginManager
242
241
  .getApplicationPlugins()
243
242
  .flatMap(
@@ -311,7 +310,7 @@ export class QueryLoaderState {
311
310
  searchSpecification =
312
311
  this.decorateSearchSpecification?.(searchSpecification) ??
313
312
  searchSpecification;
314
- this.queries = (yield this.graphManagerState.graphManager.searchQueries(
313
+ this.queries = (yield this.graphManager.searchQueries(
315
314
  searchSpecification,
316
315
  )) as LightQuery[];
317
316
  if (!querySearchSortBy) {
@@ -330,7 +329,7 @@ export class QueryLoaderState {
330
329
  *renameQuery(queryId: string, name: string): GeneratorFn<void> {
331
330
  this.renameQueryState.inProgress();
332
331
  try {
333
- const query = (yield this.graphManagerState.graphManager.renameQuery(
332
+ const query = (yield this.graphManager.renameQuery(
334
333
  queryId,
335
334
  name,
336
335
  )) as Query;
@@ -350,7 +349,7 @@ export class QueryLoaderState {
350
349
  *deleteQuery(queryId: string): GeneratorFn<void> {
351
350
  this.deleteQueryState.inProgress();
352
351
  try {
353
- yield this.graphManagerState.graphManager.deleteQuery(queryId);
352
+ yield this.graphManager.deleteQuery(queryId);
354
353
  this.onQueryDeleted?.(queryId);
355
354
  this.applicationStore.notificationService.notifySuccess(
356
355
  'Deleted query successfully',
@@ -374,13 +373,12 @@ export class QueryLoaderState {
374
373
  this.previewQueryState.inProgress();
375
374
  try {
376
375
  if (queryId) {
377
- const queryInfo =
378
- (yield this.graphManagerState.graphManager.getQueryInfo(
379
- queryId,
380
- )) as QueryInfo;
376
+ const queryInfo = (yield this.graphManager.getQueryInfo(
377
+ queryId,
378
+ )) as QueryInfo;
381
379
  this.queryPreviewContent = queryInfo;
382
380
  this.queryPreviewContent.content =
383
- (yield this.graphManagerState.graphManager.prettyLambdaContent(
381
+ (yield this.graphManager.prettyLambdaContent(
384
382
  queryInfo.content,
385
383
  )) as string;
386
384
  } else if (template) {
@@ -389,7 +387,7 @@ export class QueryLoaderState {
389
387
  content: '',
390
388
  } as QueryInfo;
391
389
  this.queryPreviewContent.content =
392
- (yield this.graphManagerState.graphManager.lambdaToPureCode(
390
+ (yield this.graphManager.lambdaToPureCode(
393
391
  template.queryContent,
394
392
  true,
395
393
  )) as string;
@@ -15,12 +15,11 @@
15
15
  */
16
16
 
17
17
  import {
18
- SUPPORTED_FUNCTIONS,
19
- V1_AppliedFunction,
20
18
  V1_Lambda,
21
19
  RawLambda,
22
20
  RelationalExecutionActivities,
23
21
  TDSExecutionResult,
22
+ V1_AppliedFunction,
24
23
  V1_deserializeRawValueSpecification,
25
24
  V1_deserializeValueSpecification,
26
25
  V1_RawLambda,
@@ -30,17 +29,17 @@ import {
30
29
  type V1_ValueSpecification,
31
30
  type ParameterValue,
32
31
  LAMBDA_PIPE,
32
+ SUPPORTED_FUNCTIONS,
33
33
  } from '@finos/legend-graph';
34
34
  import {
35
35
  _elementPtr,
36
- _functionName,
37
36
  DataCubeEngine,
38
37
  DataCubeSource,
39
- type RelationType,
40
- DataCubeQuery,
41
- type CompletionItem,
42
38
  _function,
43
39
  DataCubeFunction,
40
+ type CompletionItem,
41
+ _functionName,
42
+ DataCubeQuery,
44
43
  } from '@finos/legend-data-cube';
45
44
  import {
46
45
  guaranteeType,
@@ -61,7 +60,7 @@ export class QueryBuilderDataCubeEngine extends DataCubeEngine {
61
60
  readonly mappingPath: string | undefined;
62
61
  readonly parameterValues: ParameterValue[] | undefined;
63
62
  readonly runtimePath: string | undefined;
64
- _parameters: object | undefined;
63
+ readonly parameters: object | undefined;
65
64
 
66
65
  constructor(
67
66
  selectQuery: RawLambda,
@@ -71,11 +70,13 @@ export class QueryBuilderDataCubeEngine extends DataCubeEngine {
71
70
  graphManagerState: GraphManagerState,
72
71
  ) {
73
72
  super();
73
+
74
74
  this.graphState = graphManagerState;
75
75
  this.selectInitialQuery = selectQuery;
76
76
  this.mappingPath = mappingPath;
77
77
  this.runtimePath = runtimePath;
78
78
  this.parameterValues = parameterValues;
79
+ this.parameters = selectQuery.parameters;
79
80
  }
80
81
 
81
82
  get sourceLabel(): string {
@@ -105,9 +106,8 @@ export class QueryBuilderDataCubeEngine extends DataCubeEngine {
105
106
  return srcFuncExp;
106
107
  }
107
108
 
108
- async getBaseQuery() {
109
+ async generateInitialQuery() {
109
110
  const srcFuncExp = this.getSourceFunctionExpression();
110
- this._parameters = this.selectInitialQuery.parameters;
111
111
  const fromFuncExp = new V1_AppliedFunction();
112
112
  fromFuncExp.function = _functionName(SUPPORTED_FUNCTIONS.FROM);
113
113
  fromFuncExp.parameters = [srcFuncExp];
@@ -117,18 +117,22 @@ export class QueryBuilderDataCubeEngine extends DataCubeEngine {
117
117
  if (this.runtimePath) {
118
118
  fromFuncExp.parameters.push(_elementPtr(this.runtimePath));
119
119
  }
120
- const columns = (await this.getRelationalType(this.selectInitialQuery))
120
+ const columns = (await this.getRelationType(this.selectInitialQuery))
121
121
  .columns;
122
122
  const query = new DataCubeQuery();
123
123
  query.query = `~[${columns.map((e) => `'${e.name}'`)}]->select()`;
124
+
124
125
  return query;
125
126
  }
126
127
 
127
128
  async processQuerySource(value: PlainObject) {
129
+ // TODO: this is an abnormal usage of this method, this is the place
130
+ // where we can enforce which source this engine supports, instead
131
+ // of hardcoding the logic like this.
128
132
  const srcFuncExp = this.getSourceFunctionExpression();
129
133
  const source = new QueryBuilderDataCubeSource();
130
- source.sourceColumns = (
131
- await this.getRelationalType(this.selectInitialQuery)
134
+ source.columns = (
135
+ await this.getRelationType(this.selectInitialQuery)
132
136
  ).columns;
133
137
  source.mapping = this.mappingPath;
134
138
  source.runtime = this.runtimePath;
@@ -181,7 +185,7 @@ export class QueryBuilderDataCubeEngine extends DataCubeEngine {
181
185
  );
182
186
  }
183
187
 
184
- async getValueSpecificationCode(
188
+ override async getValueSpecificationCode(
185
189
  value: V1_ValueSpecification,
186
190
  pretty?: boolean | undefined,
187
191
  ) {
@@ -191,7 +195,7 @@ export class QueryBuilderDataCubeEngine extends DataCubeEngine {
191
195
  );
192
196
  }
193
197
 
194
- async getRelationalType(query: RawLambda): Promise<RelationType> {
198
+ async getRelationType(query: RawLambda) {
195
199
  const relationType =
196
200
  await this.graphState.graphManager.getLambdaRelationType(
197
201
  query,
@@ -200,9 +204,12 @@ export class QueryBuilderDataCubeEngine extends DataCubeEngine {
200
204
  return relationType;
201
205
  }
202
206
 
203
- async getQueryRelationType(query: V1_Lambda, source: DataCubeSource) {
207
+ override async getQueryRelationType(
208
+ query: V1_Lambda,
209
+ source: DataCubeSource,
210
+ ) {
204
211
  const lambda = this.buildRawLambdaFromValueSpec(query);
205
- return this.getRelationalType(lambda);
212
+ return this.getRelationType(lambda);
206
213
  }
207
214
 
208
215
  override async getQueryCodeRelationReturnType(
@@ -215,14 +222,14 @@ export class QueryBuilderDataCubeEngine extends DataCubeEngine {
215
222
  V1_serializeValueSpecification(baseQuery, []),
216
223
  );
217
224
  const fullQuery = queryString + code;
218
- return this.getRelationalType(
225
+ return this.getRelationType(
219
226
  await this.graphState.graphManager.pureCodeToLambda(fullQuery),
220
227
  );
221
228
  }
222
229
 
223
230
  override async executeQuery(query: V1_Lambda, source: DataCubeSource) {
224
231
  const lambda = this.buildRawLambdaFromValueSpec(query);
225
- lambda.parameters = this._parameters;
232
+ lambda.parameters = this.parameters;
226
233
  const [executionWithMetadata, queryString] = await Promise.all([
227
234
  this.graphState.graphManager.runQuery(
228
235
  lambda,
@@ -21,19 +21,21 @@ import {
21
21
  import { RuntimePointer } from '@finos/legend-graph';
22
22
  import { QueryBuilderDataCubeEngine } from './QueryBuilderDataCubeEngine.js';
23
23
  import { buildExecutionParameterValues } from '../shared/LambdaParameterState.js';
24
+ import { QueryBuilderDataCubeViewerState } from './QueryBuilderDataCubeViewerState.js';
24
25
 
25
- export const createDataCubeEngineFromQueryBuilder = (
26
+ export const createDataCubeViewerStateFromQueryBuilder = async (
26
27
  queryBuilderState: QueryBuilderState,
27
- ): QueryBuilderDataCubeEngine | undefined => {
28
- const runtime =
28
+ ): Promise<QueryBuilderDataCubeViewerState | undefined> => {
29
+ const runtimePath =
29
30
  queryBuilderState.executionContextState.runtimeValue instanceof
30
31
  RuntimePointer
31
32
  ? queryBuilderState.executionContextState.runtimeValue.packageableRuntime
32
33
  .value.path
33
34
  : undefined;
34
- if (!runtime) {
35
+ if (!runtimePath) {
35
36
  return undefined;
36
37
  }
38
+ const mappingPath = queryBuilderState.executionContextState.mapping?.path;
37
39
  const currentLambdaWriterMode = queryBuilderState.lambdaWriteMode;
38
40
  // ensure we write in new tds mode
39
41
  queryBuilderState.setLambdaWriteMode(
@@ -43,13 +45,15 @@ export const createDataCubeEngineFromQueryBuilder = (
43
45
  queryBuilderState.parametersState.parameterStates,
44
46
  queryBuilderState.graphManagerState,
45
47
  );
46
- const queryBuilderEngine = new QueryBuilderDataCubeEngine(
47
- queryBuilderState.buildQuery(),
48
+ const lambda = queryBuilderState.buildQuery();
49
+ const engine = new QueryBuilderDataCubeEngine(
50
+ lambda,
48
51
  parameterValues,
49
- queryBuilderState.executionContextState.mapping?.path,
50
- runtime,
52
+ mappingPath,
53
+ runtimePath,
51
54
  queryBuilderState.graphManagerState,
52
55
  );
53
56
  queryBuilderState.setLambdaWriteMode(currentLambdaWriterMode);
54
- return queryBuilderEngine;
57
+ const query = await engine.generateInitialQuery();
58
+ return new QueryBuilderDataCubeViewerState(query, engine);
55
59
  };
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Copyright (c) 2020-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import type { DataCubeQuery } from '@finos/legend-data-cube';
18
+ import type { QueryBuilderDataCubeEngine } from './QueryBuilderDataCubeEngine.js';
19
+
20
+ export class QueryBuilderDataCubeViewerState {
21
+ query: DataCubeQuery;
22
+ engine: QueryBuilderDataCubeEngine;
23
+
24
+ constructor(query: DataCubeQuery, engine: QueryBuilderDataCubeEngine) {
25
+ this.query = query;
26
+ this.engine = engine;
27
+ }
28
+ }
@@ -28,9 +28,9 @@ import {
28
28
  V1_GraphTransformerContextBuilder,
29
29
  GenericType,
30
30
  GenericTypeExplicitReference,
31
- Relation_Relation,
32
- Relation_RelationalColumn,
33
- Relation_RelationType,
31
+ Relation,
32
+ RelationColumn,
33
+ RelationType,
34
34
  } from '@finos/legend-graph';
35
35
  import { QUERY_BUILDER_SUPPORTED_FUNCTIONS } from '../../../../graph/QueryBuilderMetaModelConst.js';
36
36
  import {
@@ -64,7 +64,7 @@ export const buildRelationProjection = (
64
64
 
65
65
  const colSepcArray = new ColSpecArray();
66
66
  instanceVal.values = [colSepcArray];
67
- const relationType = new Relation_RelationType(Relation_RelationType.ID);
67
+ const relationType = new RelationType(RelationType.ID);
68
68
 
69
69
  tdsState.projectionColumns.forEach((projectionColumnState) => {
70
70
  const colSpec = new ColSpec();
@@ -118,14 +118,11 @@ export const buildRelationProjection = (
118
118
  `Can't create value spec for projection column ${projectionColumnState.columnName}`,
119
119
  );
120
120
  relationType.columns.push(
121
- new Relation_RelationalColumn(
122
- projectionColumnState.columnName,
123
- returnType,
124
- ),
121
+ new RelationColumn(projectionColumnState.columnName, returnType),
125
122
  );
126
123
  });
127
124
  projectFunction.parametersValues = [precedingExpression, instanceVal];
128
- const relationGenericType = new GenericType(Relation_Relation.INSTANCE);
125
+ const relationGenericType = new GenericType(Relation.INSTANCE);
129
126
  const relationTypeGenericType = new GenericType(relationType);
130
127
  relationGenericType.typeArguments = [
131
128
  GenericTypeExplicitReference.create(relationTypeGenericType),
package/tsconfig.json CHANGED
@@ -103,7 +103,8 @@
103
103
  "./src/stores/__test-utils__/QueryBuilderStateTestUtils.ts",
104
104
  "./src/stores/data-access/DataAccessState.ts",
105
105
  "./src/stores/data-cube/QueryBuilderDataCubeEngine.ts",
106
- "./src/stores/data-cube/QueryBuilderDataCubeEngineHelper.ts",
106
+ "./src/stores/data-cube/QueryBuilderDataCubeHelper.ts",
107
+ "./src/stores/data-cube/QueryBuilderDataCubeViewerState.ts",
107
108
  "./src/stores/entitlements/QueryBuilderCheckEntitlementsState.ts",
108
109
  "./src/stores/execution-plan/ExecutionPlanState.ts",
109
110
  "./src/stores/explorer/QueryBuilderExplorerState.ts",
@@ -1 +0,0 @@
1
- {"version":3,"file":"QueryBuilderDataCubeEngineHelper.d.ts","sourceRoot":"","sources":["../../../src/stores/data-cube/QueryBuilderDataCubeEngineHelper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAG7E,eAAO,MAAM,oCAAoC,sBAC5B,iBAAiB,KACnC,0BAA0B,GAAG,SA4B/B,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"QueryBuilderDataCubeEngineHelper.js","sourceRoot":"","sources":["../../../src/stores/data-cube/QueryBuilderDataCubeEngineHelper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,gCAAgC,GAEjC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AAElF,MAAM,CAAC,MAAM,oCAAoC,GAAG,CAClD,iBAAoC,EACI,EAAE;IAC1C,MAAM,OAAO,GACX,iBAAiB,CAAC,qBAAqB,CAAC,YAAY;QACpD,cAAc;QACZ,CAAC,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,YAAY,CAAC,kBAAkB;aACpE,KAAK,CAAC,IAAI;QACf,CAAC,CAAC,SAAS,CAAC;IAChB,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,uBAAuB,GAAG,iBAAiB,CAAC,eAAe,CAAC;IAClE,kCAAkC;IAClC,iBAAiB,CAAC,kBAAkB,CAClC,gCAAgC,CAAC,qBAAqB,CACvD,CAAC;IACF,MAAM,eAAe,GAAG,6BAA6B,CACnD,iBAAiB,CAAC,eAAe,CAAC,eAAe,EACjD,iBAAiB,CAAC,iBAAiB,CACpC,CAAC;IACF,MAAM,kBAAkB,GAAG,IAAI,0BAA0B,CACvD,iBAAiB,CAAC,UAAU,EAAE,EAC9B,eAAe,EACf,iBAAiB,CAAC,qBAAqB,CAAC,OAAO,EAAE,IAAI,EACrD,OAAO,EACP,iBAAiB,CAAC,iBAAiB,CACpC,CAAC;IACF,iBAAiB,CAAC,kBAAkB,CAAC,uBAAuB,CAAC,CAAC;IAC9D,OAAO,kBAAkB,CAAC;AAC5B,CAAC,CAAC"}