@finos/legend-application-data-cube 0.7.34 → 0.7.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 (32) hide show
  1. package/lib/components/__test-utils__/LegendDataCubeStoreTestUtils.d.ts.map +1 -1
  2. package/lib/components/__test-utils__/LegendDataCubeStoreTestUtils.js +12 -0
  3. package/lib/components/__test-utils__/LegendDataCubeStoreTestUtils.js.map +1 -1
  4. package/lib/components/builder/LegendDataCubeSourceViewer.js +2 -2
  5. package/lib/components/builder/LegendDataCubeSourceViewer.js.map +1 -1
  6. package/lib/components/builder/source/LakehouseConsumerDataCubeSourceBuilder.d.ts.map +1 -1
  7. package/lib/components/builder/source/LakehouseConsumerDataCubeSourceBuilder.js +64 -31
  8. package/lib/components/builder/source/LakehouseConsumerDataCubeSourceBuilder.js.map +1 -1
  9. package/lib/index.css +1 -1
  10. package/lib/package.json +1 -1
  11. package/lib/stores/LegendDataCubeDataCubeEngine.d.ts.map +1 -1
  12. package/lib/stores/LegendDataCubeDataCubeEngine.js +30 -6
  13. package/lib/stores/LegendDataCubeDataCubeEngine.js.map +1 -1
  14. package/lib/stores/builder/LegendDataCubeCreatorState.d.ts.map +1 -1
  15. package/lib/stores/builder/LegendDataCubeCreatorState.js +1 -1
  16. package/lib/stores/builder/LegendDataCubeCreatorState.js.map +1 -1
  17. package/lib/stores/builder/source/LakehouseConsumerDataCubeSourceBuilderState.d.ts +8 -15
  18. package/lib/stores/builder/source/LakehouseConsumerDataCubeSourceBuilderState.d.ts.map +1 -1
  19. package/lib/stores/builder/source/LakehouseConsumerDataCubeSourceBuilderState.js +24 -60
  20. package/lib/stores/builder/source/LakehouseConsumerDataCubeSourceBuilderState.js.map +1 -1
  21. package/lib/stores/model/LakehouseConsumerDataCubeSource.d.ts +1 -1
  22. package/lib/stores/model/LakehouseConsumerDataCubeSource.d.ts.map +1 -1
  23. package/lib/stores/model/LakehouseConsumerDataCubeSource.js +1 -1
  24. package/lib/stores/model/LakehouseConsumerDataCubeSource.js.map +1 -1
  25. package/package.json +8 -8
  26. package/src/components/__test-utils__/LegendDataCubeStoreTestUtils.tsx +15 -0
  27. package/src/components/builder/LegendDataCubeSourceViewer.tsx +3 -3
  28. package/src/components/builder/source/LakehouseConsumerDataCubeSourceBuilder.tsx +148 -95
  29. package/src/stores/LegendDataCubeDataCubeEngine.ts +51 -8
  30. package/src/stores/builder/LegendDataCubeCreatorState.tsx +0 -1
  31. package/src/stores/builder/source/LakehouseConsumerDataCubeSourceBuilderState.ts +29 -104
  32. package/src/stores/model/LakehouseConsumerDataCubeSource.ts +1 -1
@@ -30,31 +30,23 @@ import {
30
30
  ActionState,
31
31
  assertErrorThrown,
32
32
  guaranteeNonNullable,
33
- isNonNullable,
34
- uniq,
35
33
  type GeneratorFn,
36
34
  type PlainObject,
37
35
  } from '@finos/legend-shared';
38
36
  import type { DataCubeAlertService } from '@finos/legend-data-cube';
39
37
  import type { LegendDataCubeApplicationStore } from '../../LegendDataCubeBaseStore.js';
40
38
  import type { LegendDataCubeDataCubeEngine } from '../../LegendDataCubeDataCubeEngine.js';
41
- import {
42
- type LakehousePlatformServerClient,
43
- type LakehouseContractServerClient,
44
- type IngestDeploymentServerConfig,
45
- filterEnvironmentsByEntitlementsEnv,
46
- getIngestDeploymentServerConfigName,
47
- } from '@finos/legend-server-lakehouse';
39
+ import { type LakehouseContractServerClient } from '@finos/legend-server-lakehouse';
48
40
  import { VersionedProjectData } from '@finos/legend-server-depot';
49
41
  import {
50
42
  V1_SdlcDeploymentDataProductOrigin,
51
43
  type V1_EntitlementsDataProductLite,
52
44
  type V1_EntitlementsDataProductLiteResponse,
45
+ V1_EntitlementsLakehouseEnvironmentType,
53
46
  V1_entitlementsDataProductDetailsResponseToDataProductDetails,
54
47
  V1_DataProductOriginType,
55
48
  V1_AdHocDeploymentDataProductOrigin,
56
49
  type V1_EntitlementsDataProductDetails,
57
- V1_isIngestEnvsCompatibleWithEntitlements,
58
50
  V1_LegendSDLC,
59
51
  V1_serializePureModelContext,
60
52
  V1_PureModelContextPointer,
@@ -64,7 +56,6 @@ import {
64
56
  V1_Protocol,
65
57
  V1_PureGraphManager,
66
58
  PureClientVersion,
67
- type V1_EntitlementsUserEnvResponse,
68
59
  } from '@finos/legend-graph';
69
60
  import {
70
61
  RawLakehouseAdhocOrigin,
@@ -75,7 +66,7 @@ import { LegendDataCubeCodeEditorState } from '../LegendDataCubeCodeEditorState.
75
66
 
76
67
  export class LakehouseConsumerDataCubeSourceBuilderState extends LegendDataCubeSourceBuilderState {
77
68
  warehouse: string | undefined;
78
- selectedDataProduct: string | undefined;
69
+ selectedDataProduct: V1_EntitlementsDataProductLite | undefined;
79
70
  selectedAccessPoint: string | undefined;
80
71
  paths: string[] = [];
81
72
  dataProducts: V1_EntitlementsDataProductLite[] = [];
@@ -84,17 +75,12 @@ export class LakehouseConsumerDataCubeSourceBuilderState extends LegendDataCubeS
84
75
  origin: string | undefined;
85
76
  fullGraphGrammar: string | undefined;
86
77
  deploymentId: number | undefined;
87
- userEntitlementEnvs: string[] = [];
78
+ envMode: V1_EntitlementsLakehouseEnvironmentType;
88
79
  dataProductDetails: V1_EntitlementsDataProductDetails[] | undefined;
89
80
  showQueryEditor = false;
90
81
  DEFAULT_CONSUMER_WAREHOUSE = 'LAKEHOUSE_CONSUMER_DEFAULT_WH';
91
82
  codeEditorState: LegendDataCubeCodeEditorState;
92
83
 
93
- // envs
94
- allEnvironments: IngestDeploymentServerConfig[] | undefined;
95
- selectedEnvironment: IngestDeploymentServerConfig | undefined;
96
-
97
- private readonly _platformServerClient: LakehousePlatformServerClient;
98
84
  private readonly _contractServerClient: LakehouseContractServerClient;
99
85
  readonly dataProductLoadingState = ActionState.create();
100
86
  readonly ingestEnvLoadingState = ActionState.create();
@@ -102,38 +88,32 @@ export class LakehouseConsumerDataCubeSourceBuilderState extends LegendDataCubeS
102
88
  constructor(
103
89
  application: LegendDataCubeApplicationStore,
104
90
  engine: LegendDataCubeDataCubeEngine,
105
- platformServerClient: LakehousePlatformServerClient,
106
91
  contractServerClient: LakehouseContractServerClient,
107
92
  alertService: DataCubeAlertService,
108
93
  ) {
109
94
  super(application, engine, alertService);
110
- this._platformServerClient = platformServerClient;
111
95
  this._contractServerClient = contractServerClient;
112
96
 
113
97
  makeObservable(this, {
114
98
  warehouse: observable,
115
99
  dataProducts: observable,
116
100
  selectedDataProduct: observable,
101
+ envMode: observable,
117
102
  accessPoints: observable,
118
- allEnvironments: observable,
119
103
  dataProductDetails: observable,
120
- environments: computed,
104
+ filteredDataProducts: computed,
121
105
  selectedDataProductDetail: computed,
122
106
  selectedAccessPoint: observable,
123
- selectedEnvironment: observable,
124
107
  showQueryEditor: observable,
125
108
  setShowQueryEditor: action,
109
+ setEnvMode: action,
126
110
  loadDataProducts: flow,
127
- fetchEnvironment: flow,
128
- fetchUserEntitlementEnvs: flow,
129
111
 
130
112
  setWarehouse: action,
131
113
  setDataProducts: action,
132
114
  setSelectedDataProduct: action,
133
115
  setAccessPoints: action,
134
116
  setSelectedAccessPoint: action,
135
- setSelectedEnvironment: action,
136
- setUserEntitlementEnv: action,
137
117
  });
138
118
 
139
119
  this.codeEditorState = new LegendDataCubeCodeEditorState(
@@ -142,6 +122,8 @@ export class LakehouseConsumerDataCubeSourceBuilderState extends LegendDataCubeS
142
122
  undefined,
143
123
  );
144
124
 
125
+ this.envMode = V1_EntitlementsLakehouseEnvironmentType.PRODUCTION;
126
+
145
127
  reaction(
146
128
  () => this.selectedAccessPoint,
147
129
  (accessPoint) => {
@@ -158,7 +140,9 @@ export class LakehouseConsumerDataCubeSourceBuilderState extends LegendDataCubeS
158
140
  this.dataProducts = dataProducts;
159
141
  }
160
142
 
161
- setSelectedDataProduct(dataProduct: string | undefined) {
143
+ setSelectedDataProduct(
144
+ dataProduct: V1_EntitlementsDataProductLite | undefined,
145
+ ) {
162
146
  this.selectedDataProduct = dataProduct;
163
147
  }
164
148
 
@@ -166,68 +150,37 @@ export class LakehouseConsumerDataCubeSourceBuilderState extends LegendDataCubeS
166
150
  this.accessPoints = accessPoints;
167
151
  }
168
152
 
169
- setAllEnvironments(environments: IngestDeploymentServerConfig[]) {
170
- this.allEnvironments = environments;
171
- }
172
-
173
153
  setSelectedAccessPoint(accessPoint: string | undefined) {
174
154
  this.selectedAccessPoint = accessPoint;
175
155
  }
176
156
 
177
- setSelectedEnvironment(
178
- environment: IngestDeploymentServerConfig | undefined,
179
- ) {
180
- this.selectedEnvironment = environment;
157
+ setEnvMode(env: V1_EntitlementsLakehouseEnvironmentType): void {
158
+ this.envMode = env;
181
159
  }
182
160
 
183
- setUserEntitlementEnv(envs: string[]) {
184
- this.userEntitlementEnvs = envs;
161
+ get filteredDataProducts(): V1_EntitlementsDataProductLite[] {
162
+ if (!this.dataProducts.length) {
163
+ return [];
164
+ }
165
+ return this.dataProducts.filter(
166
+ (dp) => dp.lakehouseEnvironment?.type === this.envMode,
167
+ );
185
168
  }
186
169
 
187
170
  setShowQueryEditor(val: boolean): void {
188
171
  this.showQueryEditor = val;
189
172
  }
190
173
 
191
- get environments(): IngestDeploymentServerConfig[] {
192
- const allEnvironments = this.allEnvironments;
193
- if (allEnvironments) {
194
- const details = this.dataProductDetails?.map(
195
- (detail) => detail.lakehouseEnvironment?.type,
196
- );
197
- if (details?.length && !details.includes(undefined)) {
198
- const entitlementsTypes = uniq(details.filter(isNonNullable));
199
- return uniq(
200
- entitlementsTypes
201
- .map((type) =>
202
- filterEnvironmentsByEntitlementsEnv(type, allEnvironments),
203
- )
204
- .flat()
205
- .filter((env) =>
206
- this.userEntitlementEnvs.some((userEnv) =>
207
- userEnv.includes(env.environmentName),
208
- ),
209
- ),
210
- );
211
- }
212
- return allEnvironments;
213
- }
214
- return [];
215
- }
216
-
217
174
  get selectedDataProductDetail():
218
175
  | V1_EntitlementsDataProductDetails
219
176
  | undefined {
220
- const selectedEnv = this.selectedEnvironment;
221
- if (selectedEnv && this.dataProductDetails?.length) {
177
+ if (this.dataProductDetails?.length) {
222
178
  const details = this.dataProductDetails.filter((dpDetail) => {
223
179
  const dpDetailType = dpDetail.lakehouseEnvironment?.type;
224
180
  if (!dpDetailType) {
225
181
  return false;
226
182
  }
227
- return V1_isIngestEnvsCompatibleWithEntitlements(
228
- selectedEnv.environmentClassification,
229
- dpDetailType,
230
- );
183
+ return dpDetailType === this.envMode;
231
184
  });
232
185
  if (details.length === 1) {
233
186
  return guaranteeNonNullable(details[0]);
@@ -259,10 +212,11 @@ export class LakehouseConsumerDataCubeSourceBuilderState extends LegendDataCubeS
259
212
  this.dataProductDetails =
260
213
  V1_entitlementsDataProductDetailsResponseToDataProductDetails(
261
214
  await this._contractServerClient.getDataProduct(
262
- selectedDp.split('::').pop() ?? '',
215
+ selectedDp.id,
263
216
  access_token,
264
217
  ),
265
218
  );
219
+ await this.fetchAccessPoints();
266
220
  }
267
221
 
268
222
  async fetchAccessPoints() {
@@ -324,35 +278,12 @@ export class LakehouseConsumerDataCubeSourceBuilderState extends LegendDataCubeS
324
278
  }
325
279
  }
326
280
 
327
- *fetchEnvironment(access_token: string | undefined): GeneratorFn<void> {
328
- this.ingestEnvLoadingState.inProgress();
329
- const ingestServerConfigs =
330
- (yield this._platformServerClient.getIngestEnvironmentSummaries(
331
- access_token,
332
- )) as IngestDeploymentServerConfig[];
333
- this.setAllEnvironments(ingestServerConfigs);
334
- this.ingestEnvLoadingState.complete();
335
- }
336
-
337
- *fetchUserEntitlementEnvs(
338
- access_token: string | undefined,
339
- ): GeneratorFn<void> {
340
- const entitledEnvs =
341
- (yield this._contractServerClient.getUserEntitlementEnvs(
342
- this._application.identityService.currentUser,
343
- access_token,
344
- )) as V1_EntitlementsUserEnvResponse;
345
- this.setUserEntitlementEnv(
346
- entitledEnvs.users.map((env) => env.lakehouseEnvironment),
347
- );
348
- }
349
-
350
281
  async initializeQuery() {
351
282
  const query = new V1_ClassInstance();
352
283
  query.type = V1_ClassInstanceType.DATA_PRODUCT_ACCESSOR;
353
284
  const dataProductAccessor = new V1_DataProductAccessor();
354
285
  dataProductAccessor.path = [
355
- guaranteeNonNullable(this.selectedDataProduct),
286
+ guaranteeNonNullable(this.selectedDataProduct?.fullPath),
356
287
  guaranteeNonNullable(this.selectedAccessPoint),
357
288
  ];
358
289
  dataProductAccessor.parameters = [];
@@ -368,7 +299,6 @@ export class LakehouseConsumerDataCubeSourceBuilderState extends LegendDataCubeS
368
299
  this.setSelectedDataProduct(undefined);
369
300
  this.setAccessPoints([]);
370
301
  this.setSelectedAccessPoint(undefined);
371
- this.setSelectedEnvironment(undefined);
372
302
  this.dpCoordinates = undefined;
373
303
  }
374
304
 
@@ -376,7 +306,6 @@ export class LakehouseConsumerDataCubeSourceBuilderState extends LegendDataCubeS
376
306
  this.setWarehouse(undefined);
377
307
  this.setAccessPoints([]);
378
308
  this.setSelectedAccessPoint(undefined);
379
- this.setSelectedEnvironment(undefined);
380
309
  this.dpCoordinates = undefined;
381
310
  }
382
311
 
@@ -396,7 +325,7 @@ export class LakehouseConsumerDataCubeSourceBuilderState extends LegendDataCubeS
396
325
  Boolean(this.warehouse) &&
397
326
  Boolean(this.selectedAccessPoint) &&
398
327
  Boolean(this.selectedDataProduct) &&
399
- Boolean(this.selectedEnvironment) &&
328
+ Boolean(this.envMode) &&
400
329
  !this.codeEditorState.hasErrors
401
330
  );
402
331
  }
@@ -406,17 +335,12 @@ export class LakehouseConsumerDataCubeSourceBuilderState extends LegendDataCubeS
406
335
  this.paths = [];
407
336
  this.paths.push(
408
337
  ...[
409
- guaranteeNonNullable(this.selectedDataProduct),
338
+ guaranteeNonNullable(this.selectedDataProduct?.fullPath),
410
339
  guaranteeNonNullable(this.selectedAccessPoint),
411
340
  ],
412
341
  );
413
342
 
414
343
  const rawSource = new RawLakehouseConsumerDataCubeSource();
415
- const selectedEnv = guaranteeNonNullable(this.selectedEnvironment);
416
- rawSource.environment = guaranteeNonNullable(
417
- getIngestDeploymentServerConfigName(selectedEnv),
418
- 'Unable to resolve env env string',
419
- );
420
344
  if (this.origin === V1_DataProductOriginType.SDLC_DEPLOYMENT) {
421
345
  const lakehouseOrigin = new RawLakehouseSdlcOrigin();
422
346
  lakehouseOrigin.dpCoordinates = guaranteeNonNullable(this.dpCoordinates);
@@ -425,6 +349,7 @@ export class LakehouseConsumerDataCubeSourceBuilderState extends LegendDataCubeS
425
349
  rawSource.origin = new RawLakehouseAdhocOrigin();
426
350
  }
427
351
  rawSource.paths = this.paths;
352
+ rawSource.environment = guaranteeNonNullable(this.envMode);
428
353
  rawSource.warehouse = guaranteeNonNullable(this.warehouse);
429
354
  rawSource.deploymentId = this.deploymentId;
430
355
  rawSource.query = this.codeEditorState.code;
@@ -44,7 +44,7 @@ export class LakehouseConsumerDataCubeSource extends DataCubeSource {
44
44
  dpCoordinates?: VersionedProjectData;
45
45
  runtime!: string;
46
46
  warehouse!: string;
47
- environment!: string;
47
+ userEnvironment!: string;
48
48
  paths!: string[];
49
49
  deploymentId?: number | undefined;
50
50
  }