Skip to content

Commit

Permalink
update DataSpaceAnalysisResult metamodel (#3542)
Browse files Browse the repository at this point in the history
  • Loading branch information
YannanGao-gs authored Sep 20, 2024
1 parent deb0a30 commit ea81381
Show file tree
Hide file tree
Showing 7 changed files with 121 additions and 36 deletions.
3 changes: 3 additions & 0 deletions .changeset/perfect-toes-ring.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
---
'@finos/legend-application-query': patch
---
5 changes: 5 additions & 0 deletions .changeset/sweet-tables-smell.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@finos/legend-extension-dsl-data-space': patch
---

update DataSpaceAnalysisResult metamodel
Original file line number Diff line number Diff line change
Expand Up @@ -1392,9 +1392,9 @@ export class ExistingQueryEditorStore extends QueryEditorStore {
sourceInfo,
);
const mappingModelCoverageAnalysisResult =
dataSpaceAnalysisResult?.executionContextsIndex.get(
matchingExecutionContext.name,
)?.mappingModelCoverageAnalysisResult;
dataSpaceAnalysisResult?.mappingToMappingCoverageResult?.get(
matchingExecutionContext.mapping.value.path,
);
if (mappingModelCoverageAnalysisResult) {
dataSpaceQueryBuilderState.explorerState.mappingModelCoverageAnalysisResult =
mappingModelCoverageAnalysisResult;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ export class DataSpaceExecutionContextAnalysisResult {
mapping!: Mapping;
defaultRuntime!: PackageableRuntime;
compatibleRuntimes!: PackageableRuntime[];
mappingModelCoverageAnalysisResult!: MappingModelCoverageAnalysisResult;
datasets: DatasetSpecification[] = [];
runtimeMetadata?: DataSpaceExecutionContextRuntimeMetadata;
}
Expand Down Expand Up @@ -133,17 +132,14 @@ export class DataSpaceDiagramAnalysisResult {
}

export abstract class DataSpaceExecutableInfo {
query!: string;
}

export class DataSpaceTemplateExecutableInfo extends DataSpaceExecutableInfo {
id!: string;
executionContextKey!: string;
query!: string;
}

export class DataSpaceTemplateExecutableInfo extends DataSpaceExecutableInfo {}

export class DataSpaceFunctionPointerExecutableInfo extends DataSpaceExecutableInfo {
id!: string;
executionContextKey!: string;
function!: string;
}

Expand Down Expand Up @@ -220,6 +216,11 @@ export class DataSpaceAnalysisResult {

supportInfo?: DataSpaceSupportInfo | undefined;

mappingToMappingCoverageResult?: Map<
string,
MappingModelCoverageAnalysisResult
>;

get displayName(): string {
return this.title ?? prettyCONSTName(this.name);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,10 @@
*/

import {
type QueryInfo,
type AbstractPureGraphManager,
type PureProtocolProcessorPlugin,
type MappingModelCoverageAnalysisResult,
PureModel,
V1_PureGraphManager,
PureClientVersion,
Expand All @@ -32,7 +34,6 @@ import {
V1_buildDatasetSpecification,
V1_buildModelCoverageAnalysisResult,
V1_deserializePackageableElement,
type QueryInfo,
QueryDataSpaceExecutionContextInfo,
} from '@finos/legend-graph';
import type { Entity } from '@finos/legend-storage';
Expand Down Expand Up @@ -398,6 +399,24 @@ export class V1_DSL_DataSpace_PureGraphManagerExtension extends DSL_DataSpace_Pu
ActionState.create(),
);

const mappingToMappingCoverageResult = new Map<
string,
MappingModelCoverageAnalysisResult
>();
if (analysisResult.mappingToMappingCoverageResult) {
Object.entries(analysisResult.mappingToMappingCoverageResult).forEach(
(entry) => {
mappingToMappingCoverageResult.set(
entry[0],
V1_buildModelCoverageAnalysisResult(
entry[1],
graph.getMapping(entry[0]),
),
);
},
);
}

// execution context
result.executionContextsIndex = new Map<
string,
Expand Down Expand Up @@ -426,11 +445,18 @@ export class V1_DSL_DataSpace_PureGraphManagerExtension extends DSL_DataSpace_Pu
}
contextAnalysisResult.runtimeMetadata = metadata;
}
contextAnalysisResult.mappingModelCoverageAnalysisResult =
V1_buildModelCoverageAnalysisResult(
context.mappingModelCoverageAnalysisResult,
contextAnalysisResult.mapping,

// for handling deprecated mappingModelCoverageAnalysisResult
if (context.mappingModelCoverageAnalysisResult) {
mappingToMappingCoverageResult.set(
context.mapping,
V1_buildModelCoverageAnalysisResult(
context.mappingModelCoverageAnalysisResult,
contextAnalysisResult.mapping,
),
);
}

contextAnalysisResult.compatibleRuntimes = context.compatibleRuntimes.map(
(runtime) => graph.getRuntime(runtime),
);
Expand Down Expand Up @@ -578,25 +604,40 @@ export class V1_DSL_DataSpace_PureGraphManagerExtension extends DSL_DataSpace_Pu
executableProtocol.info instanceof V1_DataSpaceTemplateExecutableInfo
) {
const templateExecutableInfo = new DataSpaceTemplateExecutableInfo();
templateExecutableInfo.id = executableProtocol.info.id;
if (executableProtocol.info.id) {
templateExecutableInfo.id = executableProtocol.info.id;
}
if (executableProtocol.info.executionContextKey) {
templateExecutableInfo.executionContextKey =
executableProtocol.info.executionContextKey;
}
templateExecutableInfo.query = executableProtocol.info.query;
templateExecutableInfo.executionContextKey =
executableProtocol.info.executionContextKey;
} else if (
executableProtocol.info instanceof
V1_DataSpaceFunctionPointerExecutableInfo
) {
const templateExecutableInfo =
new DataSpaceFunctionPointerExecutableInfo();
templateExecutableInfo.id = executableProtocol.info.id;
if (executableProtocol.info.id) {
templateExecutableInfo.id = executableProtocol.info.id;
}
if (executableProtocol.info.executionContextKey) {
templateExecutableInfo.executionContextKey =
executableProtocol.info.executionContextKey;
}
templateExecutableInfo.function = executableProtocol.info.function;
templateExecutableInfo.executionContextKey =
executableProtocol.info.executionContextKey;
} else if (
executableProtocol.info instanceof V1_DataSpaceServiceExecutableInfo
) {
const serviceExecutableInfo = new DataSpaceServiceExecutableInfo();
serviceExecutableInfo.query = executableProtocol.info.query;
if (executableProtocol.info.id) {
serviceExecutableInfo.id = executableProtocol.info.id;
}
if (executableProtocol.info.executionContextKey) {
serviceExecutableInfo.executionContextKey =
executableProtocol.info.executionContextKey;
}
serviceExecutableInfo.pattern = executableProtocol.info.pattern;
serviceExecutableInfo.mapping = executableProtocol.info.mapping;
serviceExecutableInfo.runtime = executableProtocol.info.runtime;
Expand Down Expand Up @@ -626,6 +667,13 @@ export class V1_DSL_DataSpace_PureGraphManagerExtension extends DSL_DataSpace_Pu
executableProtocol.info.query;
multiExecutionServiceExecutableInfo.pattern =
executableProtocol.info.pattern;
if (executableProtocol.info.id) {
multiExecutionServiceExecutableInfo.id = executableProtocol.info.id;
}
if (executableProtocol.info.executionContextKey) {
multiExecutionServiceExecutableInfo.executionContextKey =
executableProtocol.info.executionContextKey;
}
executable.info = multiExecutionServiceExecutableInfo;
}
if (
Expand Down Expand Up @@ -669,6 +717,8 @@ export class V1_DSL_DataSpace_PureGraphManagerExtension extends DSL_DataSpace_Pu
},
);

result.mappingToMappingCoverageResult = mappingToMappingCoverageResult;

return result;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ import {
isNonNullable,
optionalCustomUsingModelSchema,
usingModelSchema,
serializeMap,
deserializeMap,
} from '@finos/legend-shared';
import {
type ModelSchema,
Expand All @@ -45,6 +47,7 @@ import {
object,
optional,
primitive,
serialize,
SKIP,
} from 'serializr';
import type { V1_DataSpaceSupportInfo } from '../../model/packageableElements/dataSpace/V1_DSL_DataSpace_DataSpace.js';
Expand Down Expand Up @@ -83,7 +86,7 @@ class V1_DataSpaceExecutionContextAnalysisResult {
mapping!: string;
defaultRuntime!: string;
compatibleRuntimes!: string[];
mappingModelCoverageAnalysisResult!: V1_MappingModelCoverageAnalysisResult;
mappingModelCoverageAnalysisResult?: V1_MappingModelCoverageAnalysisResult;
datasets: V1_DatasetSpecification[] = [];
runtimeMetadata?: V1_DataSpaceExecutionContextRuntimeMetadata;
}
Expand Down Expand Up @@ -116,8 +119,10 @@ const V1_dataSpaceExecutionContextAnalysisResultModelSchema = (
),
defaultRuntime: primitive(),
description: optional(primitive()),
mappingModelCoverageAnalysisResult: usingModelSchema(
V1_MappingModelCoverageAnalysisResult.serialization.schema,
mappingModelCoverageAnalysisResult: optional(
usingModelSchema(
V1_MappingModelCoverageAnalysisResult.serialization.schema,
),
),
mapping: primitive(),
name: primitive(),
Expand Down Expand Up @@ -263,6 +268,8 @@ export class V1_DataSpaceDiagramAnalysisResult {
}

export abstract class V1_DataSpaceExecutableInfo {
id?: string;
executionContextKey?: string;
query!: string;
}

Expand All @@ -273,14 +280,9 @@ const V1_DATA_SPACE_SERVICE_EXECUTABLE_INFO_TYPE = 'service';
const V1_DATA_SPACE_MULTI_EXECUTION_SERVICE_EXECUTABLE_INFO_TYPE =
'multiExecutionService';

export class V1_DataSpaceTemplateExecutableInfo extends V1_DataSpaceExecutableInfo {
id!: string;
executionContextKey!: string;
}
export class V1_DataSpaceTemplateExecutableInfo extends V1_DataSpaceExecutableInfo {}

export class V1_DataSpaceFunctionPointerExecutableInfo extends V1_DataSpaceExecutableInfo {
id!: string;
executionContextKey!: string;
function!: string;
}

Expand Down Expand Up @@ -324,6 +326,8 @@ const V1_dataSpaceServiceExecutableInfoModelSchema = (
V1_deserializeDatasetSpecification(val, plugins),
),
),
id: optional(primitive()),
executionContextKey: optional(primitive()),
mapping: optional(primitive()),
pattern: primitive(),
query: primitive(),
Expand All @@ -348,6 +352,8 @@ const V1_dataSpaceMultiExecutionServiceKeyedExecutableInfoModelSchema = (
V1_deserializeDatasetSpecification(val, plugins),
),
),
id: optional(primitive()),
executionContextKey: optional(primitive()),
key: primitive(),
mapping: optional(primitive()),
runtime: optional(primitive()),
Expand Down Expand Up @@ -501,6 +507,11 @@ export class V1_DataSpaceAnalysisResult {

executables: V1_DataSpaceExecutableAnalysisResult[] = [];
diagrams: V1_DataSpaceDiagramAnalysisResult[] = [];

mappingToMappingCoverageResult?: Map<
string,
V1_MappingModelCoverageAnalysisResult
>;
}

const V1_dataSpaceAnalysisResultModelSchema = (
Expand All @@ -527,9 +538,6 @@ const V1_dataSpaceAnalysisResultModelSchema = (
executionContexts: customListWithSchema(
V1_dataSpaceExecutionContextAnalysisResultModelSchema(plugins),
),
mappingModelCoverageAnalysisResult: usingModelSchema(
V1_MappingModelCoverageAnalysisResult.serialization.schema,
),
defaultExecutionContext: primitive(),

elements: list(primitive()),
Expand All @@ -544,6 +552,24 @@ const V1_dataSpaceAnalysisResultModelSchema = (
executables: customListWithSchema(
V1_dataSpaceExecutableAnalysisResultModelSchema(plugins),
),
mappingToMappingCoverageResult: optional(
custom(
(val) =>
serializeMap(val, (_val) =>
serialize(
V1_MappingModelCoverageAnalysisResult.serialization.schema,
_val,
),
),
(val) =>
deserializeMap(val, (_val) =>
deserialize(
V1_MappingModelCoverageAnalysisResult.serialization.schema,
_val,
),
),
),
),
});

export const V1_deserializeDataSpaceAnalysisResult = (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -437,9 +437,9 @@ export class DataSpaceQueryBuilderState extends QueryBuilderState {
const mapping = executionContext.mapping.value;
this.changeMapping(mapping);
const mappingModelCoverageAnalysisResult =
this.dataSpaceAnalysisResult?.executionContextsIndex.get(
executionContext.name,
)?.mappingModelCoverageAnalysisResult;
this.dataSpaceAnalysisResult?.mappingToMappingCoverageResult?.get(
mapping.path,
);
if (mappingModelCoverageAnalysisResult) {
this.explorerState.mappingModelCoverageAnalysisResult =
mappingModelCoverageAnalysisResult;
Expand Down

0 comments on commit ea81381

Please sign in to comment.