@finos/legend-application-data-cube 0.7.33 → 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.
- package/lib/components/__test-utils__/LegendDataCubeStoreTestUtils.d.ts.map +1 -1
- package/lib/components/__test-utils__/LegendDataCubeStoreTestUtils.js +12 -0
- package/lib/components/__test-utils__/LegendDataCubeStoreTestUtils.js.map +1 -1
- package/lib/components/builder/LegendDataCubeSourceViewer.js +2 -2
- package/lib/components/builder/LegendDataCubeSourceViewer.js.map +1 -1
- package/lib/components/builder/source/LakehouseConsumerDataCubeSourceBuilder.d.ts.map +1 -1
- package/lib/components/builder/source/LakehouseConsumerDataCubeSourceBuilder.js +64 -31
- package/lib/components/builder/source/LakehouseConsumerDataCubeSourceBuilder.js.map +1 -1
- package/lib/index.css +1 -1
- package/lib/package.json +1 -1
- package/lib/stores/LegendDataCubeDataCubeEngine.d.ts.map +1 -1
- package/lib/stores/LegendDataCubeDataCubeEngine.js +30 -6
- package/lib/stores/LegendDataCubeDataCubeEngine.js.map +1 -1
- package/lib/stores/builder/LegendDataCubeCreatorState.d.ts.map +1 -1
- package/lib/stores/builder/LegendDataCubeCreatorState.js +1 -1
- package/lib/stores/builder/LegendDataCubeCreatorState.js.map +1 -1
- package/lib/stores/builder/source/LakehouseConsumerDataCubeSourceBuilderState.d.ts +8 -15
- package/lib/stores/builder/source/LakehouseConsumerDataCubeSourceBuilderState.d.ts.map +1 -1
- package/lib/stores/builder/source/LakehouseConsumerDataCubeSourceBuilderState.js +24 -60
- package/lib/stores/builder/source/LakehouseConsumerDataCubeSourceBuilderState.js.map +1 -1
- package/lib/stores/model/LakehouseConsumerDataCubeSource.d.ts +1 -1
- package/lib/stores/model/LakehouseConsumerDataCubeSource.d.ts.map +1 -1
- package/lib/stores/model/LakehouseConsumerDataCubeSource.js +1 -1
- package/lib/stores/model/LakehouseConsumerDataCubeSource.js.map +1 -1
- package/package.json +8 -8
- package/src/components/__test-utils__/LegendDataCubeStoreTestUtils.tsx +15 -0
- package/src/components/builder/LegendDataCubeSourceViewer.tsx +3 -3
- package/src/components/builder/source/LakehouseConsumerDataCubeSourceBuilder.tsx +148 -95
- package/src/stores/LegendDataCubeDataCubeEngine.ts +51 -8
- package/src/stores/builder/LegendDataCubeCreatorState.tsx +0 -1
- package/src/stores/builder/source/LakehouseConsumerDataCubeSourceBuilderState.ts +29 -104
- 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:
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
178
|
-
|
|
179
|
-
) {
|
|
180
|
-
this.selectedEnvironment = environment;
|
|
157
|
+
setEnvMode(env: V1_EntitlementsLakehouseEnvironmentType): void {
|
|
158
|
+
this.envMode = env;
|
|
181
159
|
}
|
|
182
160
|
|
|
183
|
-
|
|
184
|
-
this.
|
|
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
|
-
|
|
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
|
|
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.
|
|
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.
|
|
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
|
-
|
|
47
|
+
userEnvironment!: string;
|
|
48
48
|
paths!: string[];
|
|
49
49
|
deploymentId?: number | undefined;
|
|
50
50
|
}
|