@finos/legend-graph 0.0.6 → 0.1.0
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/CHANGELOG.md +6 -0
- package/lib/DSLMapping_Exports.d.ts +4 -1
- package/lib/DSLMapping_Exports.d.ts.map +1 -1
- package/lib/DSLMapping_Exports.js +2 -1
- package/lib/DSLMapping_Exports.js.map +1 -1
- package/lib/graphManager/AbstractPureGraphManager.d.ts +1 -1
- package/lib/graphManager/AbstractPureGraphManager.d.ts.map +1 -1
- package/lib/graphManager/AbstractPureGraphManager.js.map +1 -1
- package/lib/helpers/MappingHelper.d.ts +4 -0
- package/lib/helpers/MappingHelper.d.ts.map +1 -1
- package/lib/helpers/MappingHelper.js +15 -3
- package/lib/helpers/MappingHelper.js.map +1 -1
- package/lib/helpers/MappingResolutionHelper.d.ts +7 -1
- package/lib/helpers/MappingResolutionHelper.d.ts.map +1 -1
- package/lib/helpers/MappingResolutionHelper.js +11 -5
- package/lib/helpers/MappingResolutionHelper.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/models/metamodels/pure/packageableElements/connection/Connection.d.ts +1 -0
- package/lib/models/metamodels/pure/packageableElements/connection/Connection.d.ts.map +1 -1
- package/lib/models/metamodels/pure/packageableElements/connection/Connection.js.map +1 -1
- package/lib/models/metamodels/pure/packageableElements/domain/Multiplicity.d.ts +2 -0
- package/lib/models/metamodels/pure/packageableElements/domain/Multiplicity.d.ts.map +1 -1
- package/lib/models/metamodels/pure/packageableElements/domain/Multiplicity.js +9 -1
- package/lib/models/metamodels/pure/packageableElements/domain/Multiplicity.js.map +1 -1
- package/lib/models/metamodels/pure/packageableElements/mapping/Mapping.d.ts +2 -2
- package/lib/models/metamodels/pure/packageableElements/mapping/Mapping.d.ts.map +1 -1
- package/lib/models/metamodels/pure/packageableElements/mapping/Mapping.js +4 -6
- package/lib/models/metamodels/pure/packageableElements/mapping/Mapping.js.map +1 -1
- package/lib/models/metamodels/pure/packageableElements/mapping/PropertyMappingsImplementation.d.ts +1 -0
- package/lib/models/metamodels/pure/packageableElements/mapping/PropertyMappingsImplementation.d.ts.map +1 -1
- package/lib/models/metamodels/pure/packageableElements/store/relational/mapping/RootRelationalInstanceSetImplementation.d.ts +2 -1
- package/lib/models/metamodels/pure/packageableElements/store/relational/mapping/RootRelationalInstanceSetImplementation.d.ts.map +1 -1
- package/lib/models/metamodels/pure/packageableElements/store/relational/mapping/RootRelationalInstanceSetImplementation.js +4 -1
- package/lib/models/metamodels/pure/packageableElements/store/relational/mapping/RootRelationalInstanceSetImplementation.js.map +1 -1
- package/lib/models/metamodels/pure/valueSpecification/ValueSpecification.d.ts +1 -0
- package/lib/models/metamodels/pure/valueSpecification/ValueSpecification.d.ts.map +1 -1
- package/lib/models/metamodels/pure/valueSpecification/ValueSpecification.js +8 -0
- package/lib/models/metamodels/pure/valueSpecification/ValueSpecification.js.map +1 -1
- package/lib/models/metamodels/pure/valueSpecification/VariableExpression.d.ts +3 -1
- package/lib/models/metamodels/pure/valueSpecification/VariableExpression.d.ts.map +1 -1
- package/lib/models/metamodels/pure/valueSpecification/VariableExpression.js +11 -1
- package/lib/models/metamodels/pure/valueSpecification/VariableExpression.js.map +1 -1
- package/lib/models/protocols/pure/DSLMapping_PureProtocolProcessorPlugin_Extension.d.ts +34 -0
- package/lib/models/protocols/pure/DSLMapping_PureProtocolProcessorPlugin_Extension.d.ts.map +1 -0
- package/lib/models/protocols/pure/DSLMapping_PureProtocolProcessorPlugin_Extension.js +19 -0
- package/lib/models/protocols/pure/DSLMapping_PureProtocolProcessorPlugin_Extension.js.map +1 -0
- package/lib/models/protocols/pure/v1/V1_PureGraphManager.d.ts +1 -1
- package/lib/models/protocols/pure/v1/V1_PureGraphManager.d.ts.map +1 -1
- package/lib/models/protocols/pure/v1/V1_PureGraphManager.js +11 -7
- package/lib/models/protocols/pure/v1/V1_PureGraphManager.js.map +1 -1
- package/lib/models/protocols/pure/v1/engine/V1_Engine.d.ts.map +1 -1
- package/lib/models/protocols/pure/v1/engine/V1_Engine.js +2 -1
- package/lib/models/protocols/pure/v1/engine/V1_Engine.js.map +1 -1
- package/lib/models/protocols/pure/v1/engine/generation/V1_DatabaseBuilderInput.d.ts +2 -1
- package/lib/models/protocols/pure/v1/engine/generation/V1_DatabaseBuilderInput.d.ts.map +1 -1
- package/lib/models/protocols/pure/v1/engine/generation/V1_DatabaseBuilderInput.js +6 -4
- package/lib/models/protocols/pure/v1/engine/generation/V1_DatabaseBuilderInput.js.map +1 -1
- package/lib/models/protocols/pure/v1/model/context/V1_AlloySdlc.d.ts +3 -2
- package/lib/models/protocols/pure/v1/model/context/V1_AlloySdlc.d.ts.map +1 -1
- package/lib/models/protocols/pure/v1/model/context/V1_AlloySdlc.js +5 -3
- package/lib/models/protocols/pure/v1/model/context/V1_AlloySdlc.js.map +1 -1
- package/lib/models/protocols/pure/v1/model/packageableElements/connection/V1_Connection.d.ts +1 -0
- package/lib/models/protocols/pure/v1/model/packageableElements/connection/V1_Connection.d.ts.map +1 -1
- package/lib/models/protocols/pure/v1/model/packageableElements/connection/V1_Connection.js.map +1 -1
- package/lib/models/protocols/pure/v1/model/packageableElements/mapping/V1_ClassMapping.d.ts +1 -0
- package/lib/models/protocols/pure/v1/model/packageableElements/mapping/V1_ClassMapping.d.ts.map +1 -1
- package/lib/models/protocols/pure/v1/model/packageableElements/mapping/V1_ClassMapping.js +1 -0
- package/lib/models/protocols/pure/v1/model/packageableElements/mapping/V1_ClassMapping.js.map +1 -1
- package/lib/models/protocols/pure/v1/model/packageableElements/store/relational/mapping/V1_RootRelationalClassMapping.d.ts.map +1 -1
- package/lib/models/protocols/pure/v1/model/packageableElements/store/relational/mapping/V1_RootRelationalClassMapping.js +1 -0
- package/lib/models/protocols/pure/v1/model/packageableElements/store/relational/mapping/V1_RootRelationalClassMapping.js.map +1 -1
- package/lib/models/protocols/pure/v1/transformation/pureGraph/from/V1_ConnectionTransformer.d.ts.map +1 -1
- package/lib/models/protocols/pure/v1/transformation/pureGraph/from/V1_ConnectionTransformer.js +10 -0
- package/lib/models/protocols/pure/v1/transformation/pureGraph/from/V1_ConnectionTransformer.js.map +1 -1
- package/lib/models/protocols/pure/v1/transformation/pureGraph/from/V1_MappingTransformer.d.ts.map +1 -1
- package/lib/models/protocols/pure/v1/transformation/pureGraph/from/V1_MappingTransformer.js +4 -1
- package/lib/models/protocols/pure/v1/transformation/pureGraph/from/V1_MappingTransformer.js.map +1 -1
- package/lib/models/protocols/pure/v1/transformation/pureGraph/from/V1_ValueSpecificationTransformer.d.ts +6 -33
- package/lib/models/protocols/pure/v1/transformation/pureGraph/from/V1_ValueSpecificationTransformer.d.ts.map +1 -1
- package/lib/models/protocols/pure/v1/transformation/pureGraph/from/V1_ValueSpecificationTransformer.js +22 -5
- package/lib/models/protocols/pure/v1/transformation/pureGraph/from/V1_ValueSpecificationTransformer.js.map +1 -1
- package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_ProtocolToMetaModelClassMappingSecondPassBuilder.d.ts.map +1 -1
- package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_ProtocolToMetaModelClassMappingSecondPassBuilder.js +17 -12
- package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_ProtocolToMetaModelClassMappingSecondPassBuilder.js.map +1 -1
- package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_ProtocolToMetaModelConnectionBuilder.d.ts +2 -1
- package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_ProtocolToMetaModelConnectionBuilder.d.ts.map +1 -1
- package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_ProtocolToMetaModelConnectionBuilder.js +12 -1
- package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_ProtocolToMetaModelConnectionBuilder.js.map +1 -1
- package/lib/models/protocols/pure/v1/transformation/pureGraph/to/helpers/V1_MappingBuilderHelper.d.ts.map +1 -1
- package/lib/models/protocols/pure/v1/transformation/pureGraph/to/helpers/V1_MappingBuilderHelper.js +5 -2
- package/lib/models/protocols/pure/v1/transformation/pureGraph/to/helpers/V1_MappingBuilderHelper.js.map +1 -1
- package/lib/models/protocols/pure/v1/transformation/pureGraph/to/helpers/V1_RelationalClassMappingBuilderHelper.d.ts.map +1 -1
- package/lib/models/protocols/pure/v1/transformation/pureGraph/to/helpers/V1_RelationalClassMappingBuilderHelper.js +4 -2
- package/lib/models/protocols/pure/v1/transformation/pureGraph/to/helpers/V1_RelationalClassMappingBuilderHelper.js.map +1 -1
- package/lib/models/protocols/pure/v1/transformation/pureProtocol/V1_PackageableElementSerialization.d.ts +1 -0
- package/lib/models/protocols/pure/v1/transformation/pureProtocol/V1_PackageableElementSerialization.d.ts.map +1 -1
- package/lib/models/protocols/pure/v1/transformation/pureProtocol/V1_PackageableElementSerialization.js +4 -2
- package/lib/models/protocols/pure/v1/transformation/pureProtocol/V1_PackageableElementSerialization.js.map +1 -1
- package/lib/models/protocols/pure/v1/transformation/pureProtocol/V1_PureProtocolSerialization.d.ts.map +1 -1
- package/lib/models/protocols/pure/v1/transformation/pureProtocol/V1_PureProtocolSerialization.js +4 -3
- package/lib/models/protocols/pure/v1/transformation/pureProtocol/V1_PureProtocolSerialization.js.map +1 -1
- package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ConnectionSerializationHelper.d.ts +9 -8
- package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ConnectionSerializationHelper.d.ts.map +1 -1
- package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ConnectionSerializationHelper.js +20 -5
- package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ConnectionSerializationHelper.js.map +1 -1
- package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_CoreSerializationHelper.d.ts +1 -1
- package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_CoreSerializationHelper.d.ts.map +1 -1
- package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_CoreSerializationHelper.js +1 -1
- package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_CoreSerializationHelper.js.map +1 -1
- package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_GenerationSpecificationSerializationHelper.js +2 -2
- package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_GenerationSpecificationSerializationHelper.js.map +1 -1
- package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_MappingSerializationHelper.d.ts.map +1 -1
- package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_MappingSerializationHelper.js +4 -2
- package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_MappingSerializationHelper.js.map +1 -1
- package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_RuntimeSerializationHelper.d.ts +4 -5
- package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_RuntimeSerializationHelper.d.ts.map +1 -1
- package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_RuntimeSerializationHelper.js +26 -22
- package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_RuntimeSerializationHelper.js.map +1 -1
- package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ServiceSerializationHelper.d.ts.map +1 -1
- package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ServiceSerializationHelper.js +5 -5
- package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ServiceSerializationHelper.js.map +1 -1
- package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ValueSpecificationSerializer.d.ts.map +1 -1
- package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ValueSpecificationSerializer.js +3 -2
- package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ValueSpecificationSerializer.js.map +1 -1
- package/package.json +5 -5
- package/src/DSLMapping_Exports.ts +4 -1
- package/src/graphManager/AbstractPureGraphManager.ts +2 -1
- package/src/helpers/MappingHelper.ts +43 -3
- package/src/helpers/MappingResolutionHelper.ts +14 -5
- package/src/index.ts +4 -0
- package/src/models/metamodels/pure/packageableElements/connection/Connection.ts +1 -0
- package/src/models/metamodels/pure/packageableElements/domain/Multiplicity.ts +11 -1
- package/src/models/metamodels/pure/packageableElements/mapping/Mapping.ts +4 -6
- package/src/models/metamodels/pure/packageableElements/mapping/PropertyMappingsImplementation.ts +1 -0
- package/src/models/metamodels/pure/packageableElements/store/relational/mapping/RootRelationalInstanceSetImplementation.ts +5 -2
- package/src/models/metamodels/pure/valueSpecification/ValueSpecification.ts +9 -0
- package/src/models/metamodels/pure/valueSpecification/VariableExpression.ts +17 -1
- package/src/models/protocols/pure/DSLMapping_PureProtocolProcessorPlugin_Extension.ts +53 -0
- package/src/models/protocols/pure/v1/V1_PureGraphManager.ts +21 -13
- package/src/models/protocols/pure/v1/engine/V1_Engine.ts +2 -1
- package/src/models/protocols/pure/v1/engine/generation/V1_DatabaseBuilderInput.ts +14 -11
- package/src/models/protocols/pure/v1/model/context/V1_AlloySdlc.ts +9 -3
- package/src/models/protocols/pure/v1/model/packageableElements/connection/V1_Connection.ts +1 -0
- package/src/models/protocols/pure/v1/model/packageableElements/mapping/V1_ClassMapping.ts +1 -0
- package/src/models/protocols/pure/v1/model/packageableElements/store/relational/mapping/V1_RootRelationalClassMapping.ts +1 -0
- package/src/models/protocols/pure/v1/transformation/pureGraph/from/V1_ConnectionTransformer.ts +20 -0
- package/src/models/protocols/pure/v1/transformation/pureGraph/from/V1_MappingTransformer.ts +6 -3
- package/src/models/protocols/pure/v1/transformation/pureGraph/from/V1_ValueSpecificationTransformer.ts +34 -10
- package/src/models/protocols/pure/v1/transformation/pureGraph/to/V1_ProtocolToMetaModelClassMappingSecondPassBuilder.ts +21 -12
- package/src/models/protocols/pure/v1/transformation/pureGraph/to/V1_ProtocolToMetaModelConnectionBuilder.ts +26 -1
- package/src/models/protocols/pure/v1/transformation/pureGraph/to/helpers/V1_MappingBuilderHelper.ts +7 -2
- package/src/models/protocols/pure/v1/transformation/pureGraph/to/helpers/V1_RelationalClassMappingBuilderHelper.ts +4 -2
- package/src/models/protocols/pure/v1/transformation/pureProtocol/V1_PackageableElementSerialization.ts +7 -2
- package/src/models/protocols/pure/v1/transformation/pureProtocol/V1_PureProtocolSerialization.ts +4 -3
- package/src/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ConnectionSerializationHelper.ts +37 -8
- package/src/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_CoreSerializationHelper.ts +5 -3
- package/src/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_GenerationSpecificationSerializationHelper.ts +2 -2
- package/src/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_MappingSerializationHelper.ts +4 -2
- package/src/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_RuntimeSerializationHelper.ts +42 -38
- package/src/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ServiceSerializationHelper.ts +4 -6
- package/src/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ValueSpecificationSerializer.ts +3 -5
- package/tsconfig.json +1 -0
- package/tsconfig.package.json +40 -0
|
@@ -119,7 +119,7 @@ import type { V1_RawLambda } from './model/rawValueSpecification/V1_RawLambda';
|
|
|
119
119
|
import { V1_ExecuteInput } from './engine/execution/V1_ExecuteInput';
|
|
120
120
|
import type { V1_PureModelContextGenerationInput } from './engine/import/V1_PureModelContextGenerationInput';
|
|
121
121
|
import { V1_buildValueSpecification } from './transformation/pureGraph/to/helpers/V1_ValueSpecificationBuilderHelper';
|
|
122
|
-
import {
|
|
122
|
+
import { V1_transformRootValueSpecification } from './transformation/pureGraph/from/V1_ValueSpecificationTransformer';
|
|
123
123
|
import { V1_Profile } from './model/packageableElements/domain/V1_Profile';
|
|
124
124
|
import { V1_Class } from './model/packageableElements/domain/V1_Class';
|
|
125
125
|
import { V1_Enumeration } from './model/packageableElements/domain/V1_Enumeration';
|
|
@@ -148,6 +148,7 @@ import {
|
|
|
148
148
|
V1_DatabaseBuilderConfig,
|
|
149
149
|
V1_DatabaseBuilderInput,
|
|
150
150
|
V1_DatabasePattern,
|
|
151
|
+
V1_setupDatabaseBuilderInputSerialization,
|
|
151
152
|
V1_TargetDatabase,
|
|
152
153
|
} from './engine/generation/V1_DatabaseBuilderInput';
|
|
153
154
|
import { V1_transformRelationalDatabaseConnection } from './transformation/pureGraph/from/V1_ConnectionTransformer';
|
|
@@ -157,6 +158,10 @@ import { V1_ServiceStore } from './model/packageableElements/store/relational/V1
|
|
|
157
158
|
import type { V1_Multiplicity } from './model/packageableElements/domain/V1_Multiplicity';
|
|
158
159
|
import type { V1_RawVariable } from './model/rawValueSpecification/V1_RawVariable';
|
|
159
160
|
import { V1_setupDatabaseSerialization } from './transformation/pureProtocol/serializationHelpers/V1_DatabaseSerializationHelper';
|
|
161
|
+
import {
|
|
162
|
+
V1_setupEngineRuntimeSerialization,
|
|
163
|
+
V1_setupLegacyRuntimeSerialization,
|
|
164
|
+
} from './transformation/pureProtocol/serializationHelpers/V1_RuntimeSerializationHelper';
|
|
160
165
|
import type { DSLGenerationSpecification_PureProtocolProcessorPlugin_Extension } from '../DSLGenerationSpecification_PureProtocolProcessorPlugin_Extension';
|
|
161
166
|
import type { RawRelationalOperationElement } from '../../../metamodels/pure/packageableElements/store/relational/model/RawRelationalOperationElement';
|
|
162
167
|
import { V1_GraphTransformerContextBuilder } from './transformation/pureGraph/from/V1_GraphTransformerContext';
|
|
@@ -379,13 +384,22 @@ export class V1_PureGraphManager extends AbstractPureGraphManager {
|
|
|
379
384
|
this.extensions = new V1_GraphBuilderExtensions(
|
|
380
385
|
this.pluginManager.getPureProtocolProcessorPlugins(),
|
|
381
386
|
);
|
|
382
|
-
// setup
|
|
387
|
+
// setup serialization plugins
|
|
383
388
|
V1_setupPureModelContextDataSerialization(
|
|
384
389
|
this.pluginManager.getPureProtocolProcessorPlugins(),
|
|
385
390
|
);
|
|
386
391
|
V1_setupDatabaseSerialization(
|
|
387
392
|
this.pluginManager.getPureProtocolProcessorPlugins(),
|
|
388
393
|
);
|
|
394
|
+
V1_setupEngineRuntimeSerialization(
|
|
395
|
+
this.pluginManager.getPureProtocolProcessorPlugins(),
|
|
396
|
+
);
|
|
397
|
+
V1_setupLegacyRuntimeSerialization(
|
|
398
|
+
this.pluginManager.getPureProtocolProcessorPlugins(),
|
|
399
|
+
);
|
|
400
|
+
V1_setupDatabaseBuilderInputSerialization(
|
|
401
|
+
this.pluginManager.getPureProtocolProcessorPlugins(),
|
|
402
|
+
);
|
|
389
403
|
}
|
|
390
404
|
|
|
391
405
|
TEMP__getEngineConfig(): TEMP__AbstractEngineConfig {
|
|
@@ -1661,14 +1675,7 @@ export class V1_PureGraphManager extends AbstractPureGraphManager {
|
|
|
1661
1675
|
valueSpecification: ValueSpecification,
|
|
1662
1676
|
): Record<PropertyKey, unknown> {
|
|
1663
1677
|
return V1_serializeValueSpecification(
|
|
1664
|
-
valueSpecification
|
|
1665
|
-
new V1_ValueSpecificationTransformer(
|
|
1666
|
-
[],
|
|
1667
|
-
new Map<string, unknown[]>(),
|
|
1668
|
-
true,
|
|
1669
|
-
false,
|
|
1670
|
-
),
|
|
1671
|
-
),
|
|
1678
|
+
V1_transformRootValueSpecification(valueSpecification),
|
|
1672
1679
|
) as Record<PropertyKey, unknown>;
|
|
1673
1680
|
}
|
|
1674
1681
|
|
|
@@ -1942,7 +1949,8 @@ export class V1_PureGraphManager extends AbstractPureGraphManager {
|
|
|
1942
1949
|
async registerService(
|
|
1943
1950
|
graph: PureModel,
|
|
1944
1951
|
service: Service,
|
|
1945
|
-
|
|
1952
|
+
groupdId: string,
|
|
1953
|
+
artifactId: string,
|
|
1946
1954
|
server: string,
|
|
1947
1955
|
executionMode: ServiceExecutionMode,
|
|
1948
1956
|
version: string | undefined,
|
|
@@ -1962,7 +1970,7 @@ export class V1_PureGraphManager extends AbstractPureGraphManager {
|
|
|
1962
1970
|
break;
|
|
1963
1971
|
}
|
|
1964
1972
|
case ServiceExecutionMode.SEMI_INTERACTIVE: {
|
|
1965
|
-
const sdlcInfo = new V1_AlloySdlc(
|
|
1973
|
+
const sdlcInfo = new V1_AlloySdlc(groupdId, artifactId, version);
|
|
1966
1974
|
const pointer = new V1_PureModelContextPointer(protocol, sdlcInfo);
|
|
1967
1975
|
// data
|
|
1968
1976
|
const data = new V1_PureModelContextData();
|
|
@@ -1988,7 +1996,7 @@ export class V1_PureGraphManager extends AbstractPureGraphManager {
|
|
|
1988
1996
|
break;
|
|
1989
1997
|
}
|
|
1990
1998
|
case ServiceExecutionMode.PROD: {
|
|
1991
|
-
const sdlcInfo = new V1_AlloySdlc(
|
|
1999
|
+
const sdlcInfo = new V1_AlloySdlc(groupdId, artifactId, version);
|
|
1992
2000
|
const pointer = new V1_PureModelContextPointer(protocol, sdlcInfo);
|
|
1993
2001
|
sdlcInfo.packageableElementPointers = [
|
|
1994
2002
|
new V1_PackageableElementPointer(
|
|
@@ -81,6 +81,7 @@ import { V1_ServiceStorage } from './service/V1_ServiceStorage';
|
|
|
81
81
|
import { V1_ServiceRegistrationResult } from './service/V1_ServiceRegistrationResult';
|
|
82
82
|
import type { V1_PureModelContext } from '../model/context/V1_PureModelContext';
|
|
83
83
|
import { ServiceExecutionMode } from '../../../../../graphManager/action/service/ServiceExecutionMode';
|
|
84
|
+
import { serialize } from 'serializr';
|
|
84
85
|
|
|
85
86
|
class V1_EngineConfig extends TEMP__AbstractEngineConfig {
|
|
86
87
|
private engine: V1_Engine;
|
|
@@ -598,7 +599,7 @@ export class V1_Engine {
|
|
|
598
599
|
): Promise<V1_PureModelContextData> {
|
|
599
600
|
return V1_deserializePureModelContextData(
|
|
600
601
|
await this.engineServerClient.buildDatabase(
|
|
601
|
-
V1_DatabaseBuilderInput
|
|
602
|
+
serialize(V1_DatabaseBuilderInput, input),
|
|
602
603
|
),
|
|
603
604
|
);
|
|
604
605
|
}
|
|
@@ -27,6 +27,7 @@ import {
|
|
|
27
27
|
V1_deserializeConnectionValue,
|
|
28
28
|
} from '../../transformation/pureProtocol/serializationHelpers/V1_ConnectionSerializationHelper';
|
|
29
29
|
import type { V1_RelationalDatabaseConnection } from '../../model/packageableElements/store/relational/connection/V1_RelationalDatabaseConnection';
|
|
30
|
+
import type { PureProtocolProcessorPlugin } from '../../../PureProtocolProcessorPlugin';
|
|
30
31
|
|
|
31
32
|
export class V1_DatabasePattern {
|
|
32
33
|
schemaPattern!: string;
|
|
@@ -78,15 +79,17 @@ export class V1_DatabaseBuilderInput {
|
|
|
78
79
|
connection!: V1_RelationalDatabaseConnection;
|
|
79
80
|
config!: V1_DatabaseBuilderConfig;
|
|
80
81
|
targetDatabase!: V1_TargetDatabase;
|
|
81
|
-
|
|
82
|
-
static readonly serialization = new SerializationFactory(
|
|
83
|
-
createModelSchema(V1_DatabaseBuilderInput, {
|
|
84
|
-
config: usingModelSchema(V1_DatabaseBuilderConfig.serialization.schema),
|
|
85
|
-
connection: custom(
|
|
86
|
-
(val) => V1_serializeConnectionValue(val, false),
|
|
87
|
-
(val) => V1_deserializeConnectionValue(val, false),
|
|
88
|
-
),
|
|
89
|
-
targetDatabase: usingModelSchema(V1_TargetDatabase.serialization.schema),
|
|
90
|
-
}),
|
|
91
|
-
);
|
|
92
82
|
}
|
|
83
|
+
|
|
84
|
+
export const V1_setupDatabaseBuilderInputSerialization = (
|
|
85
|
+
plugins: PureProtocolProcessorPlugin[],
|
|
86
|
+
): void => {
|
|
87
|
+
createModelSchema(V1_DatabaseBuilderInput, {
|
|
88
|
+
config: usingModelSchema(V1_DatabaseBuilderConfig.serialization.schema),
|
|
89
|
+
connection: custom(
|
|
90
|
+
(val) => V1_serializeConnectionValue(val, false, plugins),
|
|
91
|
+
(val) => V1_deserializeConnectionValue(val, false, plugins),
|
|
92
|
+
),
|
|
93
|
+
targetDatabase: usingModelSchema(V1_TargetDatabase.serialization.schema),
|
|
94
|
+
});
|
|
95
|
+
};
|
|
@@ -27,10 +27,16 @@ export abstract class V1_Sdlc {
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
export class V1_AlloySdlc extends V1_Sdlc {
|
|
30
|
-
|
|
30
|
+
groupId: string;
|
|
31
|
+
artifactId: string;
|
|
31
32
|
|
|
32
|
-
constructor(
|
|
33
|
+
constructor(
|
|
34
|
+
groupId: string,
|
|
35
|
+
artifactId: string,
|
|
36
|
+
version: string | undefined,
|
|
37
|
+
) {
|
|
33
38
|
super(version);
|
|
34
|
-
this.
|
|
39
|
+
this.groupId = groupId;
|
|
40
|
+
this.artifactId = artifactId;
|
|
35
41
|
}
|
|
36
42
|
}
|
|
@@ -34,6 +34,7 @@ export enum V1_ConnectionType {
|
|
|
34
34
|
|
|
35
35
|
/* @MARKER: NEW CONNECTION TYPE SUPPORT --- consider adding connection type handler here whenever support for a new one is added to the app */
|
|
36
36
|
export interface V1_ConnectionVisitor<T> {
|
|
37
|
+
visit_Connection(connection: V1_Connection): T;
|
|
37
38
|
visit_ConnectionPointer(connection: V1_ConnectionPointer): T;
|
|
38
39
|
visit_JsonModelConnection(connection: V1_JsonModelConnection): T;
|
|
39
40
|
visit_ModelChainConnection(connection: V1_ModelChainConnection): T;
|
package/src/models/protocols/pure/v1/transformation/pureGraph/from/V1_ConnectionTransformer.ts
CHANGED
|
@@ -82,6 +82,7 @@ import { V1_FlatDataConnection } from '../../../model/packageableElements/store/
|
|
|
82
82
|
import { V1_ModelChainConnection } from '../../../model/packageableElements/store/modelToModel/connection/V1_ModelChainConnection';
|
|
83
83
|
import { V1_transformPostProcessor } from './V1_PostProcessorTransformer';
|
|
84
84
|
import type { StoreRelational_PureProtocolProcessorPlugin_Extension } from '../../../../StoreRelational_PureProtocolProcessorPlugin_Extension';
|
|
85
|
+
import type { DSLMapping_PureProtocolProcessorPlugin_Extension } from '../../../../DSLMapping_PureProtocolProcessorPlugin_Extension';
|
|
85
86
|
import type { V1_GraphTransformerContext } from './V1_GraphTransformerContext';
|
|
86
87
|
|
|
87
88
|
const transformStaticDatasourceSpecification = (
|
|
@@ -315,6 +316,25 @@ class ConnectionTransformer implements ConnectionVisitor<V1_Connection> {
|
|
|
315
316
|
this.context = context;
|
|
316
317
|
}
|
|
317
318
|
|
|
319
|
+
visit_Connection(connection: Connection): V1_Connection {
|
|
320
|
+
const extraConnectionTransformers = this.context.plugins.flatMap(
|
|
321
|
+
(plugin) =>
|
|
322
|
+
(
|
|
323
|
+
plugin as DSLMapping_PureProtocolProcessorPlugin_Extension
|
|
324
|
+
).V1_getExtraConnectionTransformers?.() ?? [],
|
|
325
|
+
);
|
|
326
|
+
for (const transformer of extraConnectionTransformers) {
|
|
327
|
+
const connectionProtocol = transformer(connection, this.context);
|
|
328
|
+
if (connectionProtocol) {
|
|
329
|
+
return connectionProtocol;
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
throw new UnsupportedOperationError(
|
|
333
|
+
`Can't transform connection: no compatible transformer available from plugins`,
|
|
334
|
+
connection,
|
|
335
|
+
);
|
|
336
|
+
}
|
|
337
|
+
|
|
318
338
|
visit_ConnectionPointer(connection: ConnectionPointer): V1_Connection {
|
|
319
339
|
return transformConnectionPointer(connection);
|
|
320
340
|
}
|
|
@@ -825,9 +825,12 @@ const transformRootRelationalSetImpl = (
|
|
|
825
825
|
classMapping.class = V1_transformElementReference(element.class);
|
|
826
826
|
classMapping.distinct = element.distinct ?? false;
|
|
827
827
|
classMapping.id = mappingElementIdSerializer(element.id);
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
828
|
+
if (element.mainTableAlias) {
|
|
829
|
+
classMapping.mainTable = V1_transformTableAliasToTablePointer(
|
|
830
|
+
element.mainTableAlias,
|
|
831
|
+
);
|
|
832
|
+
}
|
|
833
|
+
classMapping.extendsClassMappingId = element.superSetImplementationId;
|
|
831
834
|
classMapping.primaryKey = element.primaryKey.map((pk) =>
|
|
832
835
|
V1_transformRelationalOperationElement(pk, context),
|
|
833
836
|
);
|
|
@@ -40,10 +40,8 @@ import type {
|
|
|
40
40
|
CollectionInstanceValue,
|
|
41
41
|
InstanceValue,
|
|
42
42
|
} from '../../../../../../metamodels/pure/valueSpecification/InstanceValue';
|
|
43
|
-
import
|
|
44
|
-
|
|
45
|
-
LambdaFunctionInstanceValue,
|
|
46
|
-
} from '../../../../../../metamodels/pure/valueSpecification/LambdaFunction';
|
|
43
|
+
import { LambdaFunctionInstanceValue } from '../../../../../../metamodels/pure/valueSpecification/LambdaFunction';
|
|
44
|
+
import type { LambdaFunction } from '../../../../../../metamodels/pure/valueSpecification/LambdaFunction';
|
|
47
45
|
import type {
|
|
48
46
|
AbstractPropertyExpression,
|
|
49
47
|
FunctionExpression,
|
|
@@ -82,7 +80,7 @@ import type { PackageableElement } from '../../../../../../metamodels/pure/packa
|
|
|
82
80
|
import type { INTERNAL__UnknownValueSpecification } from '../../../../../../metamodels/pure/valueSpecification/INTERNAL__UnknownValueSpecification';
|
|
83
81
|
import { V1_INTERNAL__UnknownValueSpecfication } from '../../../model/valueSpecification/V1_INTERNAL__UnknownValueSpecfication';
|
|
84
82
|
|
|
85
|
-
|
|
83
|
+
class V1_ValueSpecificationTransformer
|
|
86
84
|
implements ValueSpecificationVisitor<V1_ValueSpecification>
|
|
87
85
|
{
|
|
88
86
|
inScope: string[] = [];
|
|
@@ -352,14 +350,21 @@ export class V1_ValueSpecificationTransformer
|
|
|
352
350
|
): V1_ValueSpecification {
|
|
353
351
|
const _variable = new V1_Variable();
|
|
354
352
|
_variable.name = valueSpecification.name;
|
|
353
|
+
const genericType = valueSpecification.genericType;
|
|
354
|
+
if (this.isParameter && genericType) {
|
|
355
|
+
const multiplicity = new V1_Multiplicity();
|
|
356
|
+
multiplicity.lowerBound = valueSpecification.multiplicity.lowerBound;
|
|
357
|
+
multiplicity.upperBound = valueSpecification.multiplicity.upperBound;
|
|
358
|
+
_variable.multiplicity = multiplicity;
|
|
359
|
+
_variable.class = genericType.value.rawType.path;
|
|
360
|
+
}
|
|
355
361
|
return _variable;
|
|
356
362
|
}
|
|
357
363
|
|
|
358
364
|
visit_LambdaFunctionInstanceValue(
|
|
359
365
|
valueSpecification: LambdaFunctionInstanceValue,
|
|
360
366
|
): V1_ValueSpecification {
|
|
361
|
-
|
|
362
|
-
return V1_transformLambdaFunction(_lambda);
|
|
367
|
+
return V1_transformLambdaFunctionInstanceValue(valueSpecification);
|
|
363
368
|
}
|
|
364
369
|
|
|
365
370
|
visit_AbstractPropertyExpression(
|
|
@@ -449,9 +454,11 @@ export const V1_transformLambdaBody = (
|
|
|
449
454
|
);
|
|
450
455
|
};
|
|
451
456
|
|
|
452
|
-
export function
|
|
453
|
-
|
|
457
|
+
export function V1_transformLambdaFunctionInstanceValue(
|
|
458
|
+
valueSpecification: LambdaFunctionInstanceValue,
|
|
459
|
+
isRootLambda?: boolean,
|
|
454
460
|
): V1_Lambda {
|
|
461
|
+
const lambdaFunc = guaranteeNonNullable(valueSpecification.values[0]);
|
|
455
462
|
const lambda = new V1_Lambda();
|
|
456
463
|
lambda.parameters = lambdaFunc.functionType.parameters.map((p) =>
|
|
457
464
|
guaranteeType(
|
|
@@ -459,7 +466,7 @@ export function V1_transformLambdaFunction(
|
|
|
459
466
|
new V1_ValueSpecificationTransformer(
|
|
460
467
|
[],
|
|
461
468
|
new Map<string, unknown[]>(),
|
|
462
|
-
|
|
469
|
+
Boolean(isRootLambda),
|
|
463
470
|
false,
|
|
464
471
|
),
|
|
465
472
|
),
|
|
@@ -469,3 +476,20 @@ export function V1_transformLambdaFunction(
|
|
|
469
476
|
lambda.body = V1_transformLambdaBody(lambdaFunc, false);
|
|
470
477
|
return lambda;
|
|
471
478
|
}
|
|
479
|
+
|
|
480
|
+
export function V1_transformRootValueSpecification(
|
|
481
|
+
valueSpecification: ValueSpecification,
|
|
482
|
+
): V1_ValueSpecification {
|
|
483
|
+
if (valueSpecification instanceof LambdaFunctionInstanceValue) {
|
|
484
|
+
return V1_transformLambdaFunctionInstanceValue(valueSpecification, true);
|
|
485
|
+
} else {
|
|
486
|
+
return valueSpecification.accept_ValueSpecificationVisitor(
|
|
487
|
+
new V1_ValueSpecificationTransformer(
|
|
488
|
+
[],
|
|
489
|
+
new Map<string, unknown[]>(),
|
|
490
|
+
true,
|
|
491
|
+
false,
|
|
492
|
+
),
|
|
493
|
+
);
|
|
494
|
+
}
|
|
495
|
+
}
|
|
@@ -57,7 +57,9 @@ import type { V1_AggregateSetImplementationContainer } from '../../../model/pack
|
|
|
57
57
|
import { PackageableElementImplicitReference } from '../../../../../../metamodels/pure/packageableElements/PackageableElementReference';
|
|
58
58
|
import {
|
|
59
59
|
extractClassMappingsFromAggregationAwareClassMappings,
|
|
60
|
-
|
|
60
|
+
getAllClassMappings,
|
|
61
|
+
getAllEnumerationMappings,
|
|
62
|
+
getOwnClassMappingById,
|
|
61
63
|
} from '../../../../../../../helpers/MappingHelper';
|
|
62
64
|
|
|
63
65
|
export class V1_ProtocolToMetaModelClassMappingSecondPassBuilder
|
|
@@ -80,7 +82,7 @@ export class V1_ProtocolToMetaModelClassMappingSecondPassBuilder
|
|
|
80
82
|
this.context.resolveClass(classMapping.class).value,
|
|
81
83
|
classMapping,
|
|
82
84
|
).value;
|
|
83
|
-
const operationSetImplementation =
|
|
85
|
+
const operationSetImplementation = getOwnClassMappingById(this.parent, id);
|
|
84
86
|
assertType(
|
|
85
87
|
operationSetImplementation,
|
|
86
88
|
OperationSetImplementation,
|
|
@@ -88,7 +90,7 @@ export class V1_ProtocolToMetaModelClassMappingSecondPassBuilder
|
|
|
88
90
|
);
|
|
89
91
|
operationSetImplementation.parameters = classMapping.parameters
|
|
90
92
|
.map((parameter) => {
|
|
91
|
-
const setImplementation = this.parent.
|
|
93
|
+
const setImplementation = getAllClassMappings(this.parent).find(
|
|
92
94
|
(cm) => cm.id.value === parameter,
|
|
93
95
|
);
|
|
94
96
|
if (!setImplementation) {
|
|
@@ -117,7 +119,7 @@ export class V1_ProtocolToMetaModelClassMappingSecondPassBuilder
|
|
|
117
119
|
'Model-to-model class mapping class is missing',
|
|
118
120
|
);
|
|
119
121
|
const pureInstanceSetImplementation = guaranteeType(
|
|
120
|
-
|
|
122
|
+
getOwnClassMappingById(
|
|
121
123
|
this.parent,
|
|
122
124
|
V1_getInferredClassMappingId(
|
|
123
125
|
this.context.resolveClass(classMapping.class).value,
|
|
@@ -150,7 +152,7 @@ export class V1_ProtocolToMetaModelClassMappingSecondPassBuilder
|
|
|
150
152
|
'Flat-data class mapping class is missing',
|
|
151
153
|
);
|
|
152
154
|
const flatDataInstanceSetImplementation = guaranteeType(
|
|
153
|
-
|
|
155
|
+
getOwnClassMappingById(
|
|
154
156
|
this.parent,
|
|
155
157
|
V1_getInferredClassMappingId(
|
|
156
158
|
this.context.resolveClass(classMapping.class).value,
|
|
@@ -166,7 +168,7 @@ export class V1_ProtocolToMetaModelClassMappingSecondPassBuilder
|
|
|
166
168
|
this.context,
|
|
167
169
|
flatDataInstanceSetImplementation,
|
|
168
170
|
flatDataInstanceSetImplementation,
|
|
169
|
-
this.parent
|
|
171
|
+
getAllEnumerationMappings(this.parent),
|
|
170
172
|
),
|
|
171
173
|
),
|
|
172
174
|
) as AbstractFlatDataPropertyMapping[];
|
|
@@ -184,7 +186,7 @@ export class V1_ProtocolToMetaModelClassMappingSecondPassBuilder
|
|
|
184
186
|
'Relational class mapping class is missing',
|
|
185
187
|
);
|
|
186
188
|
const rootRelationalInstanceSetImplementation = guaranteeType(
|
|
187
|
-
|
|
189
|
+
getOwnClassMappingById(
|
|
188
190
|
this.parent,
|
|
189
191
|
V1_getInferredClassMappingId(
|
|
190
192
|
this.context.resolveClass(classMapping.class).value,
|
|
@@ -194,6 +196,10 @@ export class V1_ProtocolToMetaModelClassMappingSecondPassBuilder
|
|
|
194
196
|
RootRelationalInstanceSetImplementation,
|
|
195
197
|
);
|
|
196
198
|
rootRelationalInstanceSetImplementation.distinct = classMapping.distinct;
|
|
199
|
+
if (classMapping.extendsClassMappingId) {
|
|
200
|
+
rootRelationalInstanceSetImplementation.superSetImplementationId =
|
|
201
|
+
classMapping.extendsClassMappingId;
|
|
202
|
+
}
|
|
197
203
|
let mainTableAlias: TableAlias | undefined;
|
|
198
204
|
if (classMapping.mainTable) {
|
|
199
205
|
const relation = this.context.resolveRelation(classMapping.mainTable);
|
|
@@ -224,12 +230,12 @@ export class V1_ProtocolToMetaModelClassMappingSecondPassBuilder
|
|
|
224
230
|
rootRelationalInstanceSetImplementation,
|
|
225
231
|
this.parent,
|
|
226
232
|
embedded,
|
|
227
|
-
this.parent
|
|
233
|
+
getAllEnumerationMappings(this.parent),
|
|
228
234
|
tableAliasMap,
|
|
229
235
|
);
|
|
230
236
|
// TODO filterMapping
|
|
231
237
|
// NOTE: why are we adding embedded relational property mappings to class mapping in the backend????
|
|
232
|
-
if (!mainTableAlias) {
|
|
238
|
+
if (!mainTableAlias && !classMapping.extendsClassMappingId) {
|
|
233
239
|
const tables = new Set(
|
|
234
240
|
Array.from(tableAliasMap.values()).map((e) => e.relation),
|
|
235
241
|
);
|
|
@@ -252,7 +258,10 @@ export class V1_ProtocolToMetaModelClassMappingSecondPassBuilder
|
|
|
252
258
|
mainTableAlias.database = Array.from(dbs.values())[0];
|
|
253
259
|
rootRelationalInstanceSetImplementation.mainTableAlias = mainTableAlias;
|
|
254
260
|
}
|
|
255
|
-
if (
|
|
261
|
+
if (
|
|
262
|
+
!rootRelationalInstanceSetImplementation.primaryKey.length &&
|
|
263
|
+
!classMapping.extendsClassMappingId
|
|
264
|
+
) {
|
|
256
265
|
V1_buildRelationalPrimaryKey(rootRelationalInstanceSetImplementation);
|
|
257
266
|
}
|
|
258
267
|
return rootRelationalInstanceSetImplementation;
|
|
@@ -266,7 +275,7 @@ export class V1_ProtocolToMetaModelClassMappingSecondPassBuilder
|
|
|
266
275
|
'Aggregation-aware class mapping class is missing',
|
|
267
276
|
);
|
|
268
277
|
const aggragetionAwareInstanceSetImplementation = guaranteeType(
|
|
269
|
-
|
|
278
|
+
getOwnClassMappingById(
|
|
270
279
|
this.parent,
|
|
271
280
|
V1_getInferredClassMappingId(
|
|
272
281
|
this.context.resolveClass(classMapping.class).value,
|
|
@@ -293,7 +302,7 @@ export class V1_ProtocolToMetaModelClassMappingSecondPassBuilder
|
|
|
293
302
|
this.parent.enumerationMappings,
|
|
294
303
|
new Map<string, TableAlias>(),
|
|
295
304
|
[
|
|
296
|
-
...mapping
|
|
305
|
+
...getAllClassMappings(mapping),
|
|
297
306
|
...extractClassMappingsFromAggregationAwareClassMappings(mapping),
|
|
298
307
|
],
|
|
299
308
|
undefined,
|
|
@@ -19,6 +19,7 @@ import {
|
|
|
19
19
|
guaranteeNonNullable,
|
|
20
20
|
assertTrue,
|
|
21
21
|
assertType,
|
|
22
|
+
UnsupportedOperationError,
|
|
22
23
|
} from '@finos/legend-shared';
|
|
23
24
|
import { MODEL_STORE_NAME } from '../../../../../../../MetaModelConst';
|
|
24
25
|
import type { DatabaseType } from '../../../../../../metamodels/pure/packageableElements/store/relational/connection/RelationalDatabaseConnection';
|
|
@@ -36,7 +37,10 @@ import type { PackageableElementReference } from '../../../../../../metamodels/p
|
|
|
36
37
|
import { PackageableElementImplicitReference } from '../../../../../../metamodels/pure/packageableElements/PackageableElementReference';
|
|
37
38
|
import { ModelChainConnection } from '../../../../../../metamodels/pure/packageableElements/store/modelToModel/connection/ModelChainConnection';
|
|
38
39
|
import type { V1_GraphBuilderContext } from '../../../transformation/pureGraph/to/V1_GraphBuilderContext';
|
|
39
|
-
import type {
|
|
40
|
+
import type {
|
|
41
|
+
V1_Connection,
|
|
42
|
+
V1_ConnectionVisitor,
|
|
43
|
+
} from '../../../model/packageableElements/connection/V1_Connection';
|
|
40
44
|
import type { V1_JsonModelConnection } from '../../../model/packageableElements/store/modelToModel/connection/V1_JsonModelConnection';
|
|
41
45
|
import type { V1_XmlModelConnection } from '../../../model/packageableElements/store/modelToModel/connection/V1_XmlModelConnection';
|
|
42
46
|
import type { V1_FlatDataConnection } from '../../../model/packageableElements/store/flatData/connection/V1_FlatDataConnection';
|
|
@@ -46,6 +50,7 @@ import {
|
|
|
46
50
|
V1_buildDatasourceSpecification,
|
|
47
51
|
V1_buildAuthenticationStrategy,
|
|
48
52
|
} from '../../../transformation/pureGraph/to/helpers/V1_RelationalConnectionBuilderHelper';
|
|
53
|
+
import type { DSLMapping_PureProtocolProcessorPlugin_Extension } from '../../../../DSLMapping_PureProtocolProcessorPlugin_Extension';
|
|
49
54
|
import type { V1_ModelChainConnection } from '../../../model/packageableElements/store/modelToModel/connection/V1_ModelChainConnection';
|
|
50
55
|
import { V1_buildPostProcessor } from './helpers/V1_PostProcessorBuilderHelper';
|
|
51
56
|
|
|
@@ -63,6 +68,26 @@ export class V1_ProtocolToMetaModelConnectionBuilder
|
|
|
63
68
|
this.embeddedConnectionStore = embeddedConnectionStore;
|
|
64
69
|
}
|
|
65
70
|
|
|
71
|
+
visit_Connection(connection: V1_Connection): Connection {
|
|
72
|
+
const extraConnectionBuilders = this.context.extensions.plugins.flatMap(
|
|
73
|
+
(plugin) =>
|
|
74
|
+
(
|
|
75
|
+
plugin as DSLMapping_PureProtocolProcessorPlugin_Extension
|
|
76
|
+
).V1_getExtraConnectionBuilders?.() ?? [],
|
|
77
|
+
);
|
|
78
|
+
for (const builder of extraConnectionBuilders) {
|
|
79
|
+
const store = this.embeddedConnectionStore;
|
|
80
|
+
const extraConnection = builder(connection, this.context, store);
|
|
81
|
+
if (extraConnection) {
|
|
82
|
+
return extraConnection;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
throw new UnsupportedOperationError(
|
|
86
|
+
`Can't build new connection: no compatible builder available from plugins`,
|
|
87
|
+
connection,
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
|
|
66
91
|
visit_ConnectionPointer(connection: V1_ConnectionPointer): Connection {
|
|
67
92
|
assertNonNullable(
|
|
68
93
|
connection.connection,
|
package/src/models/protocols/pure/v1/transformation/pureGraph/to/helpers/V1_MappingBuilderHelper.ts
CHANGED
|
@@ -66,6 +66,7 @@ import {
|
|
|
66
66
|
getRelationalInputType,
|
|
67
67
|
RelationalInputData,
|
|
68
68
|
} from '../../../../../../../metamodels/pure/packageableElements/store/relational/mapping/RelationalInputData';
|
|
69
|
+
import { getAllClassMappings } from '../../../../../../../../helpers/MappingHelper';
|
|
69
70
|
|
|
70
71
|
export const V1_getInferredClassMappingId = (
|
|
71
72
|
_class: Class,
|
|
@@ -285,7 +286,7 @@ export const V1_buildMappingTest = (
|
|
|
285
286
|
|
|
286
287
|
export const V1_resolveClassMappingRoot = (mapping: Mapping): void => {
|
|
287
288
|
const classToSetImplMap = new Map<Class, Set<SetImplementation>>();
|
|
288
|
-
mapping.
|
|
289
|
+
getAllClassMappings(mapping).forEach((setImpl) => {
|
|
289
290
|
const targetClass = guaranteeNonNullable(setImpl.class.value);
|
|
290
291
|
const setImplsWithTargetClass = classToSetImplMap.get(targetClass);
|
|
291
292
|
if (setImplsWithTargetClass) {
|
|
@@ -300,7 +301,11 @@ export const V1_resolveClassMappingRoot = (mapping: Mapping): void => {
|
|
|
300
301
|
const _classMappings = entries[1];
|
|
301
302
|
if (_classMappings.size === 1) {
|
|
302
303
|
const classMapping = Array.from(_classMappings.values())[0];
|
|
303
|
-
|
|
304
|
+
// ensure you are only altering current mapping
|
|
305
|
+
if (
|
|
306
|
+
classMapping.root.value === false &&
|
|
307
|
+
classMapping.parent === mapping
|
|
308
|
+
) {
|
|
304
309
|
classMapping.root = InferableMappingElementRootImplicitValue.create(
|
|
305
310
|
true,
|
|
306
311
|
classMapping.root.value,
|
|
@@ -77,7 +77,7 @@ export const V1_buildRelationalPrimaryKey = (
|
|
|
77
77
|
if (rootRelational.groupBy) {
|
|
78
78
|
rootRelational.primaryKey = rootRelational.groupBy.columns;
|
|
79
79
|
} else if (!rootRelational.primaryKey.length) {
|
|
80
|
-
const relation = rootRelational.mainTableAlias
|
|
80
|
+
const relation = rootRelational.mainTableAlias?.relation.value;
|
|
81
81
|
const mainTable = rootRelational.mainTableAlias;
|
|
82
82
|
let columns: Column[] = [];
|
|
83
83
|
if (relation instanceof Table || relation instanceof View) {
|
|
@@ -90,7 +90,9 @@ export const V1_buildRelationalPrimaryKey = (
|
|
|
90
90
|
// This might cause bugs in the future.
|
|
91
91
|
// We need more (manual) tests for confidence
|
|
92
92
|
mainTableAlias.column = ColumnExplicitReference.create(col);
|
|
93
|
-
|
|
93
|
+
if (mainTable) {
|
|
94
|
+
mainTableAlias.alias = mainTable;
|
|
95
|
+
}
|
|
94
96
|
return mainTableAlias;
|
|
95
97
|
});
|
|
96
98
|
}
|
|
@@ -98,11 +98,13 @@ export class V1_PackageableElementSerializer
|
|
|
98
98
|
implements V1_PackageableElementVisitor<PlainObject<V1_PackageableElement>>
|
|
99
99
|
{
|
|
100
100
|
extraElementProtocolSerializers: V1_ElementProtocolSerializer[] = [];
|
|
101
|
+
plugins: PureProtocolProcessorPlugin[];
|
|
101
102
|
|
|
102
103
|
constructor(plugins: PureProtocolProcessorPlugin[]) {
|
|
103
104
|
this.extraElementProtocolSerializers = plugins.flatMap(
|
|
104
105
|
(plugin) => plugin.V1_getExtraElementProtocolSerializers?.() ?? [],
|
|
105
106
|
);
|
|
107
|
+
this.plugins = plugins;
|
|
106
108
|
}
|
|
107
109
|
|
|
108
110
|
visit_PackageableElement(
|
|
@@ -180,7 +182,10 @@ export class V1_PackageableElementSerializer
|
|
|
180
182
|
visit_PackageableConnection(
|
|
181
183
|
element: V1_PackageableConnection,
|
|
182
184
|
): PlainObject<V1_PackageableElement> {
|
|
183
|
-
return serialize(
|
|
185
|
+
return serialize(
|
|
186
|
+
V1_packageableConnectionModelSchema(this.plugins),
|
|
187
|
+
element,
|
|
188
|
+
);
|
|
184
189
|
}
|
|
185
190
|
|
|
186
191
|
visit_FileGeneration(
|
|
@@ -234,7 +239,7 @@ export const V1_deserializePackageableElement = (
|
|
|
234
239
|
case V1_SERVICE_ELEMENT_PROTOCOL_TYPE:
|
|
235
240
|
return deserialize(V1_servicedModelSchema, json);
|
|
236
241
|
case V1_PACKAGEABLE_CONNECTION_ELEMENT_PROTOCOL_TYPE:
|
|
237
|
-
return deserialize(V1_packageableConnectionModelSchema, json);
|
|
242
|
+
return deserialize(V1_packageableConnectionModelSchema(plugins), json);
|
|
238
243
|
case V1_PACKAGEABLE_RUNTIME_ELEMENT_PROTOCOL_TYPE:
|
|
239
244
|
return deserialize(V1_packageableRuntimeModelSchema, json);
|
|
240
245
|
case V1_FILE_GENERATION_ELEMENT_PROTOCOL_TYPE:
|
package/src/models/protocols/pure/v1/transformation/pureProtocol/V1_PureProtocolSerialization.ts
CHANGED
|
@@ -42,7 +42,7 @@ import { V1_PureModelContextComposite } from '../../model/context/V1_PureModelCo
|
|
|
42
42
|
import { V1_Protocol } from '../../model/V1_Protocol';
|
|
43
43
|
import { V1_AlloySdlc } from '../../model/context/V1_AlloySdlc';
|
|
44
44
|
import type { V1_PureModelContext } from '../../model/context/V1_PureModelContext';
|
|
45
|
-
import {
|
|
45
|
+
import { V1_packageableElementPointerDeserializerSchema } from '../../transformation/pureProtocol/serializationHelpers/V1_CoreSerializationHelper';
|
|
46
46
|
import type { PureProtocolProcessorPlugin } from '../../../PureProtocolProcessorPlugin';
|
|
47
47
|
import type { Entity } from '@finos/legend-model-storage';
|
|
48
48
|
import { GraphDataDeserializationError } from '../../../../../../graphManager/GraphManagerUtils';
|
|
@@ -102,9 +102,10 @@ const alloySdlcSerializationModelSchema = createModelSchema(V1_AlloySdlc, {
|
|
|
102
102
|
_type: usingConstantValueSchema(V1_SdlcType.ALLOY),
|
|
103
103
|
baseVersion: optional(primitive()),
|
|
104
104
|
version: primitive(),
|
|
105
|
-
|
|
105
|
+
groupdId: primitive(),
|
|
106
|
+
artifactId: primitive(),
|
|
106
107
|
packageableElementPointers: list(
|
|
107
|
-
usingModelSchema(
|
|
108
|
+
usingModelSchema(V1_packageableElementPointerDeserializerSchema),
|
|
108
109
|
),
|
|
109
110
|
});
|
|
110
111
|
|