@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.
Files changed (166) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/lib/DSLMapping_Exports.d.ts +4 -1
  3. package/lib/DSLMapping_Exports.d.ts.map +1 -1
  4. package/lib/DSLMapping_Exports.js +2 -1
  5. package/lib/DSLMapping_Exports.js.map +1 -1
  6. package/lib/graphManager/AbstractPureGraphManager.d.ts +1 -1
  7. package/lib/graphManager/AbstractPureGraphManager.d.ts.map +1 -1
  8. package/lib/graphManager/AbstractPureGraphManager.js.map +1 -1
  9. package/lib/helpers/MappingHelper.d.ts +4 -0
  10. package/lib/helpers/MappingHelper.d.ts.map +1 -1
  11. package/lib/helpers/MappingHelper.js +15 -3
  12. package/lib/helpers/MappingHelper.js.map +1 -1
  13. package/lib/helpers/MappingResolutionHelper.d.ts +7 -1
  14. package/lib/helpers/MappingResolutionHelper.d.ts.map +1 -1
  15. package/lib/helpers/MappingResolutionHelper.js +11 -5
  16. package/lib/helpers/MappingResolutionHelper.js.map +1 -1
  17. package/lib/index.d.ts +1 -0
  18. package/lib/index.d.ts.map +1 -1
  19. package/lib/index.js +1 -0
  20. package/lib/index.js.map +1 -1
  21. package/lib/models/metamodels/pure/packageableElements/connection/Connection.d.ts +1 -0
  22. package/lib/models/metamodels/pure/packageableElements/connection/Connection.d.ts.map +1 -1
  23. package/lib/models/metamodels/pure/packageableElements/connection/Connection.js.map +1 -1
  24. package/lib/models/metamodels/pure/packageableElements/domain/Multiplicity.d.ts +2 -0
  25. package/lib/models/metamodels/pure/packageableElements/domain/Multiplicity.d.ts.map +1 -1
  26. package/lib/models/metamodels/pure/packageableElements/domain/Multiplicity.js +9 -1
  27. package/lib/models/metamodels/pure/packageableElements/domain/Multiplicity.js.map +1 -1
  28. package/lib/models/metamodels/pure/packageableElements/mapping/Mapping.d.ts +2 -2
  29. package/lib/models/metamodels/pure/packageableElements/mapping/Mapping.d.ts.map +1 -1
  30. package/lib/models/metamodels/pure/packageableElements/mapping/Mapping.js +4 -6
  31. package/lib/models/metamodels/pure/packageableElements/mapping/Mapping.js.map +1 -1
  32. package/lib/models/metamodels/pure/packageableElements/mapping/PropertyMappingsImplementation.d.ts +1 -0
  33. package/lib/models/metamodels/pure/packageableElements/mapping/PropertyMappingsImplementation.d.ts.map +1 -1
  34. package/lib/models/metamodels/pure/packageableElements/store/relational/mapping/RootRelationalInstanceSetImplementation.d.ts +2 -1
  35. package/lib/models/metamodels/pure/packageableElements/store/relational/mapping/RootRelationalInstanceSetImplementation.d.ts.map +1 -1
  36. package/lib/models/metamodels/pure/packageableElements/store/relational/mapping/RootRelationalInstanceSetImplementation.js +4 -1
  37. package/lib/models/metamodels/pure/packageableElements/store/relational/mapping/RootRelationalInstanceSetImplementation.js.map +1 -1
  38. package/lib/models/metamodels/pure/valueSpecification/ValueSpecification.d.ts +1 -0
  39. package/lib/models/metamodels/pure/valueSpecification/ValueSpecification.d.ts.map +1 -1
  40. package/lib/models/metamodels/pure/valueSpecification/ValueSpecification.js +8 -0
  41. package/lib/models/metamodels/pure/valueSpecification/ValueSpecification.js.map +1 -1
  42. package/lib/models/metamodels/pure/valueSpecification/VariableExpression.d.ts +3 -1
  43. package/lib/models/metamodels/pure/valueSpecification/VariableExpression.d.ts.map +1 -1
  44. package/lib/models/metamodels/pure/valueSpecification/VariableExpression.js +11 -1
  45. package/lib/models/metamodels/pure/valueSpecification/VariableExpression.js.map +1 -1
  46. package/lib/models/protocols/pure/DSLMapping_PureProtocolProcessorPlugin_Extension.d.ts +34 -0
  47. package/lib/models/protocols/pure/DSLMapping_PureProtocolProcessorPlugin_Extension.d.ts.map +1 -0
  48. package/lib/models/protocols/pure/DSLMapping_PureProtocolProcessorPlugin_Extension.js +19 -0
  49. package/lib/models/protocols/pure/DSLMapping_PureProtocolProcessorPlugin_Extension.js.map +1 -0
  50. package/lib/models/protocols/pure/v1/V1_PureGraphManager.d.ts +1 -1
  51. package/lib/models/protocols/pure/v1/V1_PureGraphManager.d.ts.map +1 -1
  52. package/lib/models/protocols/pure/v1/V1_PureGraphManager.js +11 -7
  53. package/lib/models/protocols/pure/v1/V1_PureGraphManager.js.map +1 -1
  54. package/lib/models/protocols/pure/v1/engine/V1_Engine.d.ts.map +1 -1
  55. package/lib/models/protocols/pure/v1/engine/V1_Engine.js +2 -1
  56. package/lib/models/protocols/pure/v1/engine/V1_Engine.js.map +1 -1
  57. package/lib/models/protocols/pure/v1/engine/generation/V1_DatabaseBuilderInput.d.ts +2 -1
  58. package/lib/models/protocols/pure/v1/engine/generation/V1_DatabaseBuilderInput.d.ts.map +1 -1
  59. package/lib/models/protocols/pure/v1/engine/generation/V1_DatabaseBuilderInput.js +6 -4
  60. package/lib/models/protocols/pure/v1/engine/generation/V1_DatabaseBuilderInput.js.map +1 -1
  61. package/lib/models/protocols/pure/v1/model/context/V1_AlloySdlc.d.ts +3 -2
  62. package/lib/models/protocols/pure/v1/model/context/V1_AlloySdlc.d.ts.map +1 -1
  63. package/lib/models/protocols/pure/v1/model/context/V1_AlloySdlc.js +5 -3
  64. package/lib/models/protocols/pure/v1/model/context/V1_AlloySdlc.js.map +1 -1
  65. package/lib/models/protocols/pure/v1/model/packageableElements/connection/V1_Connection.d.ts +1 -0
  66. package/lib/models/protocols/pure/v1/model/packageableElements/connection/V1_Connection.d.ts.map +1 -1
  67. package/lib/models/protocols/pure/v1/model/packageableElements/connection/V1_Connection.js.map +1 -1
  68. package/lib/models/protocols/pure/v1/model/packageableElements/mapping/V1_ClassMapping.d.ts +1 -0
  69. package/lib/models/protocols/pure/v1/model/packageableElements/mapping/V1_ClassMapping.d.ts.map +1 -1
  70. package/lib/models/protocols/pure/v1/model/packageableElements/mapping/V1_ClassMapping.js +1 -0
  71. package/lib/models/protocols/pure/v1/model/packageableElements/mapping/V1_ClassMapping.js.map +1 -1
  72. package/lib/models/protocols/pure/v1/model/packageableElements/store/relational/mapping/V1_RootRelationalClassMapping.d.ts.map +1 -1
  73. package/lib/models/protocols/pure/v1/model/packageableElements/store/relational/mapping/V1_RootRelationalClassMapping.js +1 -0
  74. package/lib/models/protocols/pure/v1/model/packageableElements/store/relational/mapping/V1_RootRelationalClassMapping.js.map +1 -1
  75. package/lib/models/protocols/pure/v1/transformation/pureGraph/from/V1_ConnectionTransformer.d.ts.map +1 -1
  76. package/lib/models/protocols/pure/v1/transformation/pureGraph/from/V1_ConnectionTransformer.js +10 -0
  77. package/lib/models/protocols/pure/v1/transformation/pureGraph/from/V1_ConnectionTransformer.js.map +1 -1
  78. package/lib/models/protocols/pure/v1/transformation/pureGraph/from/V1_MappingTransformer.d.ts.map +1 -1
  79. package/lib/models/protocols/pure/v1/transformation/pureGraph/from/V1_MappingTransformer.js +4 -1
  80. package/lib/models/protocols/pure/v1/transformation/pureGraph/from/V1_MappingTransformer.js.map +1 -1
  81. package/lib/models/protocols/pure/v1/transformation/pureGraph/from/V1_ValueSpecificationTransformer.d.ts +6 -33
  82. package/lib/models/protocols/pure/v1/transformation/pureGraph/from/V1_ValueSpecificationTransformer.d.ts.map +1 -1
  83. package/lib/models/protocols/pure/v1/transformation/pureGraph/from/V1_ValueSpecificationTransformer.js +22 -5
  84. package/lib/models/protocols/pure/v1/transformation/pureGraph/from/V1_ValueSpecificationTransformer.js.map +1 -1
  85. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_ProtocolToMetaModelClassMappingSecondPassBuilder.d.ts.map +1 -1
  86. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_ProtocolToMetaModelClassMappingSecondPassBuilder.js +17 -12
  87. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_ProtocolToMetaModelClassMappingSecondPassBuilder.js.map +1 -1
  88. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_ProtocolToMetaModelConnectionBuilder.d.ts +2 -1
  89. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_ProtocolToMetaModelConnectionBuilder.d.ts.map +1 -1
  90. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_ProtocolToMetaModelConnectionBuilder.js +12 -1
  91. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_ProtocolToMetaModelConnectionBuilder.js.map +1 -1
  92. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/helpers/V1_MappingBuilderHelper.d.ts.map +1 -1
  93. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/helpers/V1_MappingBuilderHelper.js +5 -2
  94. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/helpers/V1_MappingBuilderHelper.js.map +1 -1
  95. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/helpers/V1_RelationalClassMappingBuilderHelper.d.ts.map +1 -1
  96. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/helpers/V1_RelationalClassMappingBuilderHelper.js +4 -2
  97. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/helpers/V1_RelationalClassMappingBuilderHelper.js.map +1 -1
  98. package/lib/models/protocols/pure/v1/transformation/pureProtocol/V1_PackageableElementSerialization.d.ts +1 -0
  99. package/lib/models/protocols/pure/v1/transformation/pureProtocol/V1_PackageableElementSerialization.d.ts.map +1 -1
  100. package/lib/models/protocols/pure/v1/transformation/pureProtocol/V1_PackageableElementSerialization.js +4 -2
  101. package/lib/models/protocols/pure/v1/transformation/pureProtocol/V1_PackageableElementSerialization.js.map +1 -1
  102. package/lib/models/protocols/pure/v1/transformation/pureProtocol/V1_PureProtocolSerialization.d.ts.map +1 -1
  103. package/lib/models/protocols/pure/v1/transformation/pureProtocol/V1_PureProtocolSerialization.js +4 -3
  104. package/lib/models/protocols/pure/v1/transformation/pureProtocol/V1_PureProtocolSerialization.js.map +1 -1
  105. package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ConnectionSerializationHelper.d.ts +9 -8
  106. package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ConnectionSerializationHelper.d.ts.map +1 -1
  107. package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ConnectionSerializationHelper.js +20 -5
  108. package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ConnectionSerializationHelper.js.map +1 -1
  109. package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_CoreSerializationHelper.d.ts +1 -1
  110. package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_CoreSerializationHelper.d.ts.map +1 -1
  111. package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_CoreSerializationHelper.js +1 -1
  112. package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_CoreSerializationHelper.js.map +1 -1
  113. package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_GenerationSpecificationSerializationHelper.js +2 -2
  114. package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_GenerationSpecificationSerializationHelper.js.map +1 -1
  115. package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_MappingSerializationHelper.d.ts.map +1 -1
  116. package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_MappingSerializationHelper.js +4 -2
  117. package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_MappingSerializationHelper.js.map +1 -1
  118. package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_RuntimeSerializationHelper.d.ts +4 -5
  119. package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_RuntimeSerializationHelper.d.ts.map +1 -1
  120. package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_RuntimeSerializationHelper.js +26 -22
  121. package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_RuntimeSerializationHelper.js.map +1 -1
  122. package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ServiceSerializationHelper.d.ts.map +1 -1
  123. package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ServiceSerializationHelper.js +5 -5
  124. package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ServiceSerializationHelper.js.map +1 -1
  125. package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ValueSpecificationSerializer.d.ts.map +1 -1
  126. package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ValueSpecificationSerializer.js +3 -2
  127. package/lib/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ValueSpecificationSerializer.js.map +1 -1
  128. package/package.json +5 -5
  129. package/src/DSLMapping_Exports.ts +4 -1
  130. package/src/graphManager/AbstractPureGraphManager.ts +2 -1
  131. package/src/helpers/MappingHelper.ts +43 -3
  132. package/src/helpers/MappingResolutionHelper.ts +14 -5
  133. package/src/index.ts +4 -0
  134. package/src/models/metamodels/pure/packageableElements/connection/Connection.ts +1 -0
  135. package/src/models/metamodels/pure/packageableElements/domain/Multiplicity.ts +11 -1
  136. package/src/models/metamodels/pure/packageableElements/mapping/Mapping.ts +4 -6
  137. package/src/models/metamodels/pure/packageableElements/mapping/PropertyMappingsImplementation.ts +1 -0
  138. package/src/models/metamodels/pure/packageableElements/store/relational/mapping/RootRelationalInstanceSetImplementation.ts +5 -2
  139. package/src/models/metamodels/pure/valueSpecification/ValueSpecification.ts +9 -0
  140. package/src/models/metamodels/pure/valueSpecification/VariableExpression.ts +17 -1
  141. package/src/models/protocols/pure/DSLMapping_PureProtocolProcessorPlugin_Extension.ts +53 -0
  142. package/src/models/protocols/pure/v1/V1_PureGraphManager.ts +21 -13
  143. package/src/models/protocols/pure/v1/engine/V1_Engine.ts +2 -1
  144. package/src/models/protocols/pure/v1/engine/generation/V1_DatabaseBuilderInput.ts +14 -11
  145. package/src/models/protocols/pure/v1/model/context/V1_AlloySdlc.ts +9 -3
  146. package/src/models/protocols/pure/v1/model/packageableElements/connection/V1_Connection.ts +1 -0
  147. package/src/models/protocols/pure/v1/model/packageableElements/mapping/V1_ClassMapping.ts +1 -0
  148. package/src/models/protocols/pure/v1/model/packageableElements/store/relational/mapping/V1_RootRelationalClassMapping.ts +1 -0
  149. package/src/models/protocols/pure/v1/transformation/pureGraph/from/V1_ConnectionTransformer.ts +20 -0
  150. package/src/models/protocols/pure/v1/transformation/pureGraph/from/V1_MappingTransformer.ts +6 -3
  151. package/src/models/protocols/pure/v1/transformation/pureGraph/from/V1_ValueSpecificationTransformer.ts +34 -10
  152. package/src/models/protocols/pure/v1/transformation/pureGraph/to/V1_ProtocolToMetaModelClassMappingSecondPassBuilder.ts +21 -12
  153. package/src/models/protocols/pure/v1/transformation/pureGraph/to/V1_ProtocolToMetaModelConnectionBuilder.ts +26 -1
  154. package/src/models/protocols/pure/v1/transformation/pureGraph/to/helpers/V1_MappingBuilderHelper.ts +7 -2
  155. package/src/models/protocols/pure/v1/transformation/pureGraph/to/helpers/V1_RelationalClassMappingBuilderHelper.ts +4 -2
  156. package/src/models/protocols/pure/v1/transformation/pureProtocol/V1_PackageableElementSerialization.ts +7 -2
  157. package/src/models/protocols/pure/v1/transformation/pureProtocol/V1_PureProtocolSerialization.ts +4 -3
  158. package/src/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ConnectionSerializationHelper.ts +37 -8
  159. package/src/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_CoreSerializationHelper.ts +5 -3
  160. package/src/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_GenerationSpecificationSerializationHelper.ts +2 -2
  161. package/src/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_MappingSerializationHelper.ts +4 -2
  162. package/src/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_RuntimeSerializationHelper.ts +42 -38
  163. package/src/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ServiceSerializationHelper.ts +4 -6
  164. package/src/models/protocols/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ValueSpecificationSerializer.ts +3 -5
  165. package/tsconfig.json +1 -0
  166. 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 { V1_ValueSpecificationTransformer } from './transformation/pureGraph/from/V1_ValueSpecificationTransformer';
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 (de)serializer using plugins
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.accept_ValueSpecificationVisitor(
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
- projectId: string,
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(projectId, version);
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(projectId, version);
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.serialization.toJson(input),
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
- project: string;
30
+ groupId: string;
31
+ artifactId: string;
31
32
 
32
- constructor(project: string, version: string | undefined) {
33
+ constructor(
34
+ groupId: string,
35
+ artifactId: string,
36
+ version: string | undefined,
37
+ ) {
33
38
  super(version);
34
- this.project = project;
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;
@@ -46,6 +46,7 @@ export abstract class V1_ClassMapping implements Hashable {
46
46
  class?: string | undefined;
47
47
  root!: boolean;
48
48
  mappingClass?: V1_MappingClass | undefined;
49
+ extendsClassMappingId?: string | undefined;
49
50
 
50
51
  get hashCode(): string {
51
52
  return hashArray([
@@ -46,6 +46,7 @@ export class V1_RootRelationalClassMapping
46
46
  this.distinct.toString(),
47
47
  hashArray(this.groupBy),
48
48
  this.filter ?? '',
49
+ this.extendsClassMappingId ?? '',
49
50
  ]);
50
51
  }
51
52
  }
@@ -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
- classMapping.mainTable = V1_transformTableAliasToTablePointer(
829
- element.mainTableAlias,
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 type {
44
- LambdaFunction,
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
- export class V1_ValueSpecificationTransformer
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
- const _lambda = guaranteeNonNullable(valueSpecification.values[0]);
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 V1_transformLambdaFunction(
453
- lambdaFunc: LambdaFunction,
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
- true,
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
- getClassMappingById,
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 = getClassMappingById(this.parent, id);
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.allClassMappings.find(
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
- getClassMappingById(
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
- getClassMappingById(
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.allEnumerationMappings,
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
- getClassMappingById(
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.allEnumerationMappings,
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 (!rootRelationalInstanceSetImplementation.primaryKey.length) {
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
- getClassMappingById(
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.allClassMappings,
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 { V1_ConnectionVisitor } from '../../../model/packageableElements/connection/V1_Connection';
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,
@@ -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.allClassMappings.forEach((setImpl) => {
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
- if (classMapping.root.value === false) {
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.relation.value;
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
- mainTableAlias.alias = mainTable;
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(V1_packageableConnectionModelSchema, element);
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:
@@ -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 { V1_packageableElementPointerDeserrializerSchema } from '../../transformation/pureProtocol/serializationHelpers/V1_CoreSerializationHelper';
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
- project: primitive(),
105
+ groupdId: primitive(),
106
+ artifactId: primitive(),
106
107
  packageableElementPointers: list(
107
- usingModelSchema(V1_packageableElementPointerDeserrializerSchema),
108
+ usingModelSchema(V1_packageableElementPointerDeserializerSchema),
108
109
  ),
109
110
  });
110
111