@finos/legend-query-builder 4.15.40 → 4.15.42

Sign up to get free protection for your applications and to get access to all the features.
package/lib/index.css CHANGED
@@ -1,4 +1,4 @@
1
- /** @license @finos/legend-query-builder v4.15.40
1
+ /** @license @finos/legend-query-builder v4.15.42
2
2
  * Copyright (c) 2020-present, Goldman Sachs
3
3
  *
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
package/lib/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@finos/legend-query-builder",
3
- "version": "4.15.40",
3
+ "version": "4.15.42",
4
4
  "description": "Legend query builder core",
5
5
  "keywords": [
6
6
  "legend",
@@ -52,8 +52,8 @@
52
52
  "@finos/legend-shared": "workspace:*",
53
53
  "@finos/legend-storage": "workspace:*",
54
54
  "@testing-library/dom": "10.4.0",
55
- "@testing-library/react": "16.1.0",
56
- "@types/react": "19.0.7",
55
+ "@testing-library/react": "16.2.0",
56
+ "@types/react": "19.0.8",
57
57
  "@types/react-dom": "19.0.3",
58
58
  "chart.js": "4.4.7",
59
59
  "mathjs": "14.0.1",
@@ -13,7 +13,7 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import { V1_Lambda, RawLambda, TDSExecutionResult, V1_AppliedFunction, type GraphManagerState, type PureModel, type V1_ValueSpecification, type ParameterValue } from '@finos/legend-graph';
16
+ import { V1_Lambda, RawLambda, TDSExecutionResult, V1_AppliedFunction, type GraphManagerState, type V1_ValueSpecification, type ParameterValue } from '@finos/legend-graph';
17
17
  import { DataCubeEngine, DataCubeSource, type CompletionItem, DataCubeQuery } from '@finos/legend-data-cube';
18
18
  import { LogService, type PlainObject } from '@finos/legend-shared';
19
19
  declare class QueryBuilderDataCubeSource extends DataCubeSource {
@@ -29,16 +29,11 @@ export declare class QueryBuilderDataCubeEngine extends DataCubeEngine {
29
29
  readonly runtimePath: string | undefined;
30
30
  readonly parameters: object | undefined;
31
31
  constructor(selectQuery: RawLambda, parameterValues: ParameterValue[] | undefined, mappingPath: string | undefined, runtimePath: string | undefined, graphManagerState: GraphManagerState);
32
- get sourceLabel(): string;
33
- get graph(): PureModel;
34
- private getSourceFunctionExpression;
35
- generateInitialQuery(): Promise<DataCubeQuery>;
36
32
  processQuerySource(value: PlainObject): Promise<QueryBuilderDataCubeSource>;
37
- private buildRawLambdaFromValueSpec;
38
- getQueryTypeahead(code: string, baseQuery: V1_Lambda, source: DataCubeSource): Promise<CompletionItem[]>;
39
33
  parseValueSpecification(code: string, returnSourceInformation?: boolean): Promise<V1_ValueSpecification>;
40
34
  getValueSpecificationCode(value: V1_ValueSpecification, pretty?: boolean | undefined): Promise<string>;
41
- getRelationType(query: RawLambda): Promise<import("@finos/legend-graph").RelationTypeMetadata>;
35
+ getQueryTypeahead(code: string, baseQuery: V1_Lambda, source: DataCubeSource): Promise<CompletionItem[]>;
36
+ getQueryRelationReturnType(query: V1_Lambda, source: DataCubeSource): Promise<import("@finos/legend-graph").RelationTypeMetadata>;
42
37
  getQueryCodeRelationReturnType(code: string, baseQuery: V1_ValueSpecification, source: DataCubeSource): Promise<import("@finos/legend-graph").RelationTypeMetadata>;
43
38
  executeQuery(query: V1_Lambda, source: DataCubeSource): Promise<{
44
39
  result: TDSExecutionResult;
@@ -46,6 +41,10 @@ export declare class QueryBuilderDataCubeEngine extends DataCubeEngine {
46
41
  executedSQL: string;
47
42
  }>;
48
43
  buildExecutionContext(source: DataCubeSource): V1_AppliedFunction | undefined;
44
+ private buildRawLambdaFromValueSpec;
45
+ private getSourceFunctionExpression;
46
+ generateInitialQuery(): Promise<DataCubeQuery>;
47
+ getRelationType(query: RawLambda): Promise<import("@finos/legend-graph").RelationTypeMetadata>;
49
48
  }
50
49
  export {};
51
50
  //# sourceMappingURL=QueryBuilderDataCubeEngine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"QueryBuilderDataCubeEngine.d.ts","sourceRoot":"","sources":["../../../src/stores/data-cube/QueryBuilderDataCubeEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,SAAS,EACT,SAAS,EAET,kBAAkB,EAClB,kBAAkB,EAKlB,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACd,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EAGpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,cAAc,EACd,cAAc,EAGd,KAAK,cAAc,EAEnB,aAAa,EACd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAGL,UAAU,EACV,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;AAE9B,cAAM,0BAA2B,SAAQ,cAAc;IACrD,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED,qBAAa,0BAA2B,SAAQ,cAAc;IAC5D,QAAQ,CAAC,UAAU,aAAoB;IACvC,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC,QAAQ,CAAC,kBAAkB,EAAE,SAAS,CAAC;IACvC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,eAAe,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC;IACvD,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;gBAGtC,WAAW,EAAE,SAAS,EACtB,eAAe,EAAE,cAAc,EAAE,GAAG,SAAS,EAC7C,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,iBAAiB,EAAE,iBAAiB;IAYtC,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,KAAK,IAAI,SAAS,CAErB;IAED,OAAO,CAAC,2BAA2B;IAmB7B,oBAAoB;IAmBpB,kBAAkB,CAAC,KAAK,EAAE,WAAW;IAe3C,OAAO,CAAC,2BAA2B;IAU7B,iBAAiB,CACrB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,cAAc;IAmBT,uBAAuB,CACpC,IAAI,EAAE,MAAM,EACZ,uBAAuB,CAAC,EAAE,OAAO;IAWpB,yBAAyB,CACtC,KAAK,EAAE,qBAAqB,EAC5B,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS;IAQxB,eAAe,CAAC,KAAK,EAAE,SAAS;IASvB,8BAA8B,CAC3C,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,qBAAqB,EAChC,MAAM,EAAE,cAAc;IAYT,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc;;;;;IAgC3D,qBAAqB,CAC5B,MAAM,EAAE,cAAc,GACrB,kBAAkB,GAAG,SAAS;CAelC"}
1
+ {"version":3,"file":"QueryBuilderDataCubeEngine.d.ts","sourceRoot":"","sources":["../../../src/stores/data-cube/QueryBuilderDataCubeEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,SAAS,EACT,SAAS,EAET,kBAAkB,EAClB,kBAAkB,EAKlB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EAGpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,cAAc,EACd,cAAc,EAGd,KAAK,cAAc,EAEnB,aAAa,EACd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAGL,UAAU,EACV,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;AAE9B,cAAM,0BAA2B,SAAQ,cAAc;IACrD,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED,qBAAa,0BAA2B,SAAQ,cAAc;IAC5D,QAAQ,CAAC,UAAU,aAAoB;IACvC,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC,QAAQ,CAAC,kBAAkB,EAAE,SAAS,CAAC;IACvC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,eAAe,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC;IACvD,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;gBAGtC,WAAW,EAAE,SAAS,EACtB,eAAe,EAAE,cAAc,EAAE,GAAG,SAAS,EAC7C,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,iBAAiB,EAAE,iBAAiB;IAYvB,kBAAkB,CAAC,KAAK,EAAE,WAAW;IAerC,uBAAuB,CACpC,IAAI,EAAE,MAAM,EACZ,uBAAuB,CAAC,EAAE,OAAO;IAWpB,yBAAyB,CACtC,KAAK,EAAE,qBAAqB,EAC5B,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS;IAQf,iBAAiB,CAC9B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,cAAc;IAmBT,0BAA0B,CACvC,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,cAAc;IAKT,8BAA8B,CAC3C,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,qBAAqB,EAChC,MAAM,EAAE,cAAc;IAYT,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc;;;;;IAgC3D,qBAAqB,CAC5B,MAAM,EAAE,cAAc,GACrB,kBAAkB,GAAG,SAAS;IAkBjC,OAAO,CAAC,2BAA2B;IAUnC,OAAO,CAAC,2BAA2B;IAmB7B,oBAAoB;IAmBpB,eAAe,CAAC,KAAK,EAAE,SAAS;CAQvC"}
@@ -37,40 +37,6 @@ export class QueryBuilderDataCubeEngine extends DataCubeEngine {
37
37
  this.parameterValues = parameterValues;
38
38
  this.parameters = selectQuery.parameters;
39
39
  }
40
- get sourceLabel() {
41
- return `Query Builder Report`;
42
- }
43
- get graph() {
44
- return this.graphState.graph;
45
- }
46
- getSourceFunctionExpression() {
47
- let srcFuncExp = V1_deserializeValueSpecification(this.graphState.graphManager.serializeRawValueSpecification(this.selectInitialQuery), []);
48
- // We could do a further check here to ensure the experssion is an applied funciton
49
- // this is because data cube expects an expression to be able to built further upon the queery
50
- if (srcFuncExp instanceof V1_Lambda &&
51
- srcFuncExp.body.length === 1 &&
52
- srcFuncExp.body[0]) {
53
- srcFuncExp = srcFuncExp.body[0];
54
- }
55
- return srcFuncExp;
56
- }
57
- async generateInitialQuery() {
58
- const srcFuncExp = this.getSourceFunctionExpression();
59
- const fromFuncExp = new V1_AppliedFunction();
60
- fromFuncExp.function = _functionName(SUPPORTED_FUNCTIONS.FROM);
61
- fromFuncExp.parameters = [srcFuncExp];
62
- if (this.mappingPath) {
63
- fromFuncExp.parameters.push(_elementPtr(this.mappingPath));
64
- }
65
- if (this.runtimePath) {
66
- fromFuncExp.parameters.push(_elementPtr(this.runtimePath));
67
- }
68
- const columns = (await this.getRelationType(this.selectInitialQuery))
69
- .columns;
70
- const query = new DataCubeQuery();
71
- query.query = `~[${columns.map((e) => `'${e.name}'`)}]->select()`;
72
- return query;
73
- }
74
40
  async processQuerySource(value) {
75
41
  // TODO: this is an abnormal usage of this method, this is the place
76
42
  // where we can enforce which source this engine supports, instead
@@ -83,9 +49,11 @@ export class QueryBuilderDataCubeEngine extends DataCubeEngine {
83
49
  source.query = srcFuncExp;
84
50
  return source;
85
51
  }
86
- buildRawLambdaFromValueSpec(query) {
87
- const json = guaranteeType(V1_deserializeRawValueSpecification(V1_serializeValueSpecification(query, [])), V1_RawLambda);
88
- return new RawLambda(json.parameters, json.body);
52
+ async parseValueSpecification(code, returnSourceInformation) {
53
+ return V1_deserializeValueSpecification(await this.graphState.graphManager.pureCodeToValueSpecification(code, returnSourceInformation), []);
54
+ }
55
+ async getValueSpecificationCode(value, pretty) {
56
+ return this.graphState.graphManager.valueSpecificationToPureCode(V1_serializeValueSpecification(value, []), pretty);
89
57
  }
90
58
  async getQueryTypeahead(code, baseQuery, source) {
91
59
  const lambda = this.buildRawLambdaFromValueSpec(baseQuery);
@@ -93,18 +61,11 @@ export class QueryBuilderDataCubeEngine extends DataCubeEngine {
93
61
  const offset = queryString.length;
94
62
  const codeBlock = queryString + code;
95
63
  const finalCode = codeBlock.substring(codeBlock.indexOf(LAMBDA_PIPE) + LAMBDA_PIPE.length, codeBlock.length);
96
- const result = await this.graphState.graphManager.getCodeComplete(finalCode, this.graph, offset);
64
+ const result = await this.graphState.graphManager.getCodeComplete(finalCode, this.graphState.graph, offset);
97
65
  return result.completions;
98
66
  }
99
- async parseValueSpecification(code, returnSourceInformation) {
100
- return V1_deserializeValueSpecification(await this.graphState.graphManager.pureCodeToValueSpecification(code, returnSourceInformation), []);
101
- }
102
- async getValueSpecificationCode(value, pretty) {
103
- return this.graphState.graphManager.valueSpecificationToPureCode(V1_serializeValueSpecification(value, []), pretty);
104
- }
105
- async getRelationType(query) {
106
- const relationType = await this.graphState.graphManager.getLambdaRelationType(query, this.graph);
107
- return relationType;
67
+ async getQueryRelationReturnType(query, source) {
68
+ return this.getRelationType(this.buildRawLambdaFromValueSpec(query));
108
69
  }
109
70
  async getQueryCodeRelationReturnType(code, baseQuery, source) {
110
71
  const queryString = await this.graphState.graphManager.valueSpecificationToPureCode(V1_serializeValueSpecification(baseQuery, []));
@@ -115,7 +76,7 @@ export class QueryBuilderDataCubeEngine extends DataCubeEngine {
115
76
  const lambda = this.buildRawLambdaFromValueSpec(query);
116
77
  lambda.parameters = this.parameters;
117
78
  const [executionWithMetadata, queryString] = await Promise.all([
118
- this.graphState.graphManager.runQuery(lambda, undefined, undefined, this.graph, {
79
+ this.graphState.graphManager.runQuery(lambda, undefined, undefined, this.graphState.graph, {
119
80
  parameterValues: this.parameterValues ?? [],
120
81
  }),
121
82
  this.graphState.graphManager.lambdaToPureCode(lambda),
@@ -144,5 +105,42 @@ export class QueryBuilderDataCubeEngine extends DataCubeEngine {
144
105
  }
145
106
  return undefined;
146
107
  }
108
+ // ---------------------------------- UTILITIES ----------------------------------
109
+ buildRawLambdaFromValueSpec(query) {
110
+ const json = guaranteeType(V1_deserializeRawValueSpecification(V1_serializeValueSpecification(query, [])), V1_RawLambda);
111
+ return new RawLambda(json.parameters, json.body);
112
+ }
113
+ getSourceFunctionExpression() {
114
+ let srcFuncExp = V1_deserializeValueSpecification(this.graphState.graphManager.serializeRawValueSpecification(this.selectInitialQuery), []);
115
+ // We could do a further check here to ensure the experssion is an applied funciton
116
+ // this is because data cube expects an expression to be able to built further upon the queery
117
+ if (srcFuncExp instanceof V1_Lambda &&
118
+ srcFuncExp.body.length === 1 &&
119
+ srcFuncExp.body[0]) {
120
+ srcFuncExp = srcFuncExp.body[0];
121
+ }
122
+ return srcFuncExp;
123
+ }
124
+ async generateInitialQuery() {
125
+ const srcFuncExp = this.getSourceFunctionExpression();
126
+ const fromFuncExp = new V1_AppliedFunction();
127
+ fromFuncExp.function = _functionName(SUPPORTED_FUNCTIONS.FROM);
128
+ fromFuncExp.parameters = [srcFuncExp];
129
+ if (this.mappingPath) {
130
+ fromFuncExp.parameters.push(_elementPtr(this.mappingPath));
131
+ }
132
+ if (this.runtimePath) {
133
+ fromFuncExp.parameters.push(_elementPtr(this.runtimePath));
134
+ }
135
+ const columns = (await this.getRelationType(this.selectInitialQuery))
136
+ .columns;
137
+ const query = new DataCubeQuery();
138
+ query.query = `~[${columns.map((e) => `'${e.name}'`)}]->select()`;
139
+ return query;
140
+ }
141
+ async getRelationType(query) {
142
+ const relationType = await this.graphState.graphManager.getLambdaRelationType(query, this.graphState.graph);
143
+ return relationType;
144
+ }
147
145
  }
148
146
  //# sourceMappingURL=QueryBuilderDataCubeEngine.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"QueryBuilderDataCubeEngine.js","sourceRoot":"","sources":["../../../src/stores/data-cube/QueryBuilderDataCubeEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"QueryBuilderDataCubeEngine.js","sourceRoot":"","sources":["../../../src/stores/data-cube/QueryBuilderDataCubeEngine.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@finos/legend-query-builder",
3
- "version": "4.15.40",
3
+ "version": "4.15.42",
4
4
  "description": "Legend query builder core",
5
5
  "keywords": [
6
6
  "legend",
@@ -42,18 +42,18 @@
42
42
  "test:watch": "jest --watch"
43
43
  },
44
44
  "dependencies": {
45
- "@finos/legend-application": "16.0.20",
46
- "@finos/legend-art": "7.1.77",
47
- "@finos/legend-code-editor": "2.0.35",
48
- "@finos/legend-data-cube": "0.0.42",
49
- "@finos/legend-graph": "32.0.3",
50
- "@finos/legend-lego": "2.0.38",
45
+ "@finos/legend-application": "16.0.21",
46
+ "@finos/legend-art": "7.1.78",
47
+ "@finos/legend-code-editor": "2.0.37",
48
+ "@finos/legend-data-cube": "0.0.44",
49
+ "@finos/legend-graph": "32.0.5",
50
+ "@finos/legend-lego": "2.0.40",
51
51
  "@finos/legend-server-depot": "6.0.77",
52
52
  "@finos/legend-shared": "11.0.0",
53
53
  "@finos/legend-storage": "3.0.119",
54
54
  "@testing-library/dom": "10.4.0",
55
- "@testing-library/react": "16.1.0",
56
- "@types/react": "19.0.7",
55
+ "@testing-library/react": "16.2.0",
56
+ "@types/react": "19.0.8",
57
57
  "@types/react-dom": "19.0.3",
58
58
  "chart.js": "4.4.7",
59
59
  "mathjs": "14.0.1",
@@ -25,7 +25,6 @@ import {
25
25
  V1_RawLambda,
26
26
  V1_serializeValueSpecification,
27
27
  type GraphManagerState,
28
- type PureModel,
29
28
  type V1_ValueSpecification,
30
29
  type ParameterValue,
31
30
  LAMBDA_PIPE,
@@ -79,53 +78,7 @@ export class QueryBuilderDataCubeEngine extends DataCubeEngine {
79
78
  this.parameters = selectQuery.parameters;
80
79
  }
81
80
 
82
- get sourceLabel(): string {
83
- return `Query Builder Report`;
84
- }
85
-
86
- get graph(): PureModel {
87
- return this.graphState.graph;
88
- }
89
-
90
- private getSourceFunctionExpression() {
91
- let srcFuncExp = V1_deserializeValueSpecification(
92
- this.graphState.graphManager.serializeRawValueSpecification(
93
- this.selectInitialQuery,
94
- ),
95
- [],
96
- );
97
- // We could do a further check here to ensure the experssion is an applied funciton
98
- // this is because data cube expects an expression to be able to built further upon the queery
99
- if (
100
- srcFuncExp instanceof V1_Lambda &&
101
- srcFuncExp.body.length === 1 &&
102
- srcFuncExp.body[0]
103
- ) {
104
- srcFuncExp = srcFuncExp.body[0];
105
- }
106
- return srcFuncExp;
107
- }
108
-
109
- async generateInitialQuery() {
110
- const srcFuncExp = this.getSourceFunctionExpression();
111
- const fromFuncExp = new V1_AppliedFunction();
112
- fromFuncExp.function = _functionName(SUPPORTED_FUNCTIONS.FROM);
113
- fromFuncExp.parameters = [srcFuncExp];
114
- if (this.mappingPath) {
115
- fromFuncExp.parameters.push(_elementPtr(this.mappingPath));
116
- }
117
- if (this.runtimePath) {
118
- fromFuncExp.parameters.push(_elementPtr(this.runtimePath));
119
- }
120
- const columns = (await this.getRelationType(this.selectInitialQuery))
121
- .columns;
122
- const query = new DataCubeQuery();
123
- query.query = `~[${columns.map((e) => `'${e.name}'`)}]->select()`;
124
-
125
- return query;
126
- }
127
-
128
- async processQuerySource(value: PlainObject) {
81
+ override async processQuerySource(value: PlainObject) {
129
82
  // TODO: this is an abnormal usage of this method, this is the place
130
83
  // where we can enforce which source this engine supports, instead
131
84
  // of hardcoding the logic like this.
@@ -140,17 +93,30 @@ export class QueryBuilderDataCubeEngine extends DataCubeEngine {
140
93
  return source;
141
94
  }
142
95
 
143
- private buildRawLambdaFromValueSpec(query: V1_Lambda): RawLambda {
144
- const json = guaranteeType(
145
- V1_deserializeRawValueSpecification(
146
- V1_serializeValueSpecification(query, []),
96
+ override async parseValueSpecification(
97
+ code: string,
98
+ returnSourceInformation?: boolean,
99
+ ) {
100
+ return V1_deserializeValueSpecification(
101
+ await this.graphState.graphManager.pureCodeToValueSpecification(
102
+ code,
103
+ returnSourceInformation,
147
104
  ),
148
- V1_RawLambda,
105
+ [],
106
+ );
107
+ }
108
+
109
+ override async getValueSpecificationCode(
110
+ value: V1_ValueSpecification,
111
+ pretty?: boolean | undefined,
112
+ ) {
113
+ return this.graphState.graphManager.valueSpecificationToPureCode(
114
+ V1_serializeValueSpecification(value, []),
115
+ pretty,
149
116
  );
150
- return new RawLambda(json.parameters, json.body);
151
117
  }
152
118
 
153
- async getQueryTypeahead(
119
+ override async getQueryTypeahead(
154
120
  code: string,
155
121
  baseQuery: V1_Lambda,
156
122
  source: DataCubeSource,
@@ -166,42 +132,17 @@ export class QueryBuilderDataCubeEngine extends DataCubeEngine {
166
132
  );
167
133
  const result = await this.graphState.graphManager.getCodeComplete(
168
134
  finalCode,
169
- this.graph,
135
+ this.graphState.graph,
170
136
  offset,
171
137
  );
172
138
  return result.completions as CompletionItem[];
173
139
  }
174
140
 
175
- override async parseValueSpecification(
176
- code: string,
177
- returnSourceInformation?: boolean,
178
- ) {
179
- return V1_deserializeValueSpecification(
180
- await this.graphState.graphManager.pureCodeToValueSpecification(
181
- code,
182
- returnSourceInformation,
183
- ),
184
- [],
185
- );
186
- }
187
-
188
- override async getValueSpecificationCode(
189
- value: V1_ValueSpecification,
190
- pretty?: boolean | undefined,
141
+ override async getQueryRelationReturnType(
142
+ query: V1_Lambda,
143
+ source: DataCubeSource,
191
144
  ) {
192
- return this.graphState.graphManager.valueSpecificationToPureCode(
193
- V1_serializeValueSpecification(value, []),
194
- pretty,
195
- );
196
- }
197
-
198
- async getRelationType(query: RawLambda) {
199
- const relationType =
200
- await this.graphState.graphManager.getLambdaRelationType(
201
- query,
202
- this.graph,
203
- );
204
- return relationType;
145
+ return this.getRelationType(this.buildRawLambdaFromValueSpec(query));
205
146
  }
206
147
 
207
148
  override async getQueryCodeRelationReturnType(
@@ -227,7 +168,7 @@ export class QueryBuilderDataCubeEngine extends DataCubeEngine {
227
168
  lambda,
228
169
  undefined,
229
170
  undefined,
230
- this.graph,
171
+ this.graphState.graph,
231
172
  {
232
173
  parameterValues: this.parameterValues ?? [],
233
174
  },
@@ -268,4 +209,63 @@ export class QueryBuilderDataCubeEngine extends DataCubeEngine {
268
209
  }
269
210
  return undefined;
270
211
  }
212
+
213
+ // ---------------------------------- UTILITIES ----------------------------------
214
+
215
+ private buildRawLambdaFromValueSpec(query: V1_Lambda): RawLambda {
216
+ const json = guaranteeType(
217
+ V1_deserializeRawValueSpecification(
218
+ V1_serializeValueSpecification(query, []),
219
+ ),
220
+ V1_RawLambda,
221
+ );
222
+ return new RawLambda(json.parameters, json.body);
223
+ }
224
+
225
+ private getSourceFunctionExpression() {
226
+ let srcFuncExp = V1_deserializeValueSpecification(
227
+ this.graphState.graphManager.serializeRawValueSpecification(
228
+ this.selectInitialQuery,
229
+ ),
230
+ [],
231
+ );
232
+ // We could do a further check here to ensure the experssion is an applied funciton
233
+ // this is because data cube expects an expression to be able to built further upon the queery
234
+ if (
235
+ srcFuncExp instanceof V1_Lambda &&
236
+ srcFuncExp.body.length === 1 &&
237
+ srcFuncExp.body[0]
238
+ ) {
239
+ srcFuncExp = srcFuncExp.body[0];
240
+ }
241
+ return srcFuncExp;
242
+ }
243
+
244
+ async generateInitialQuery() {
245
+ const srcFuncExp = this.getSourceFunctionExpression();
246
+ const fromFuncExp = new V1_AppliedFunction();
247
+ fromFuncExp.function = _functionName(SUPPORTED_FUNCTIONS.FROM);
248
+ fromFuncExp.parameters = [srcFuncExp];
249
+ if (this.mappingPath) {
250
+ fromFuncExp.parameters.push(_elementPtr(this.mappingPath));
251
+ }
252
+ if (this.runtimePath) {
253
+ fromFuncExp.parameters.push(_elementPtr(this.runtimePath));
254
+ }
255
+ const columns = (await this.getRelationType(this.selectInitialQuery))
256
+ .columns;
257
+ const query = new DataCubeQuery();
258
+ query.query = `~[${columns.map((e) => `'${e.name}'`)}]->select()`;
259
+
260
+ return query;
261
+ }
262
+
263
+ async getRelationType(query: RawLambda) {
264
+ const relationType =
265
+ await this.graphState.graphManager.getLambdaRelationType(
266
+ query,
267
+ this.graphState.graph,
268
+ );
269
+ return relationType;
270
+ }
271
271
  }