@finos/legend-extension-dsl-persistence 2.0.9 → 2.0.10

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 (131) hide show
  1. package/lib/components/studio/DSLPersistence_CodeSnippets.d.ts +1 -0
  2. package/lib/components/studio/DSLPersistence_CodeSnippets.d.ts.map +1 -1
  3. package/lib/components/studio/DSLPersistence_CodeSnippets.js +5 -1
  4. package/lib/components/studio/DSLPersistence_CodeSnippets.js.map +1 -1
  5. package/lib/components/studio/DSLPersistence_LegendStudioDocumentation.d.ts +2 -1
  6. package/lib/components/studio/DSLPersistence_LegendStudioDocumentation.d.ts.map +1 -1
  7. package/lib/components/studio/DSLPersistence_LegendStudioDocumentation.js +1 -0
  8. package/lib/components/studio/DSLPersistence_LegendStudioDocumentation.js.map +1 -1
  9. package/lib/components/studio/DSLPersistence_LegendStudioPlugin.d.ts.map +1 -1
  10. package/lib/components/studio/DSLPersistence_LegendStudioPlugin.js +36 -5
  11. package/lib/components/studio/DSLPersistence_LegendStudioPlugin.js.map +1 -1
  12. package/lib/graph/DSLPersistence_PureGraphPlugin.d.ts.map +1 -1
  13. package/lib/graph/DSLPersistence_PureGraphPlugin.js +2 -1
  14. package/lib/graph/DSLPersistence_PureGraphPlugin.js.map +1 -1
  15. package/lib/graphManager/DSLPersistence_GraphManagerHelper.d.ts +3 -0
  16. package/lib/graphManager/DSLPersistence_GraphManagerHelper.d.ts.map +1 -1
  17. package/lib/graphManager/DSLPersistence_GraphManagerHelper.js +3 -0
  18. package/lib/graphManager/DSLPersistence_GraphManagerHelper.js.map +1 -1
  19. package/lib/graphManager/DSLPersistence_PureGraphManagerPlugin.d.ts +1 -0
  20. package/lib/graphManager/DSLPersistence_PureGraphManagerPlugin.d.ts.map +1 -1
  21. package/lib/graphManager/DSLPersistence_PureGraphManagerPlugin.js +13 -1
  22. package/lib/graphManager/DSLPersistence_PureGraphManagerPlugin.js.map +1 -1
  23. package/lib/graphManager/action/changeDetection/DSLPersistenceContext_ObserverHelper.d.ts +18 -0
  24. package/lib/graphManager/action/changeDetection/DSLPersistenceContext_ObserverHelper.d.ts.map +1 -0
  25. package/lib/graphManager/action/changeDetection/DSLPersistenceContext_ObserverHelper.js +29 -0
  26. package/lib/graphManager/action/changeDetection/DSLPersistenceContext_ObserverHelper.js.map +1 -0
  27. package/lib/index.css +2 -2
  28. package/lib/index.css.map +1 -1
  29. package/lib/index.d.ts +8 -1
  30. package/lib/index.d.ts.map +1 -1
  31. package/lib/index.js +11 -1
  32. package/lib/index.js.map +1 -1
  33. package/lib/models/DSLPersistence_ModelUtils.d.ts +5 -0
  34. package/lib/models/DSLPersistence_ModelUtils.d.ts.map +1 -1
  35. package/lib/models/DSLPersistence_ModelUtils.js +9 -0
  36. package/lib/models/DSLPersistence_ModelUtils.js.map +1 -1
  37. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistenceContext.d.ts +29 -0
  38. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistenceContext.d.ts.map +1 -0
  39. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistenceContext.js +37 -0
  40. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistenceContext.js.map +1 -0
  41. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistencePlatform.d.ts +23 -0
  42. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistencePlatform.d.ts.map +1 -0
  43. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistencePlatform.js +25 -0
  44. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistencePlatform.js.map +1 -0
  45. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_ServiceParameter.d.ts +34 -0
  46. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_ServiceParameter.d.ts.map +1 -0
  47. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_ServiceParameter.js +49 -0
  48. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_ServiceParameter.js.map +1 -0
  49. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_Sink.d.ts +3 -2
  50. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_Sink.d.ts.map +1 -1
  51. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_Sink.js +6 -1
  52. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_Sink.js.map +1 -1
  53. package/lib/models/protocols/pure/DSLPersistence_PureProtocolProcessorPlugin.d.ts +1 -0
  54. package/lib/models/protocols/pure/DSLPersistence_PureProtocolProcessorPlugin.d.ts.map +1 -1
  55. package/lib/models/protocols/pure/DSLPersistence_PureProtocolProcessorPlugin.js +33 -0
  56. package/lib/models/protocols/pure/DSLPersistence_PureProtocolProcessorPlugin.js.map +1 -1
  57. package/lib/models/protocols/pure/DSLPersistence_PureProtocolProcessorPlugin_Extension.d.ts +30 -0
  58. package/lib/models/protocols/pure/DSLPersistence_PureProtocolProcessorPlugin_Extension.d.ts.map +1 -0
  59. package/lib/models/protocols/pure/DSLPersistence_PureProtocolProcessorPlugin_Extension.js +17 -0
  60. package/lib/models/protocols/pure/DSLPersistence_PureProtocolProcessorPlugin_Extension.js.map +1 -0
  61. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_PersistenceContext.d.ts +28 -0
  62. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_PersistenceContext.d.ts.map +1 -0
  63. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_PersistenceContext.js +37 -0
  64. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_PersistenceContext.js.map +1 -0
  65. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_PersistencePlatform.d.ts +23 -0
  66. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_PersistencePlatform.d.ts.map +1 -0
  67. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_PersistencePlatform.js +25 -0
  68. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_PersistencePlatform.js.map +1 -0
  69. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_ServiceParameter.d.ts +34 -0
  70. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_ServiceParameter.d.ts.map +1 -0
  71. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_ServiceParameter.js +49 -0
  72. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_ServiceParameter.js.map +1 -0
  73. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_Sink.d.ts +2 -1
  74. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_Sink.d.ts.map +1 -1
  75. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_Sink.js +6 -1
  76. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_Sink.js.map +1 -1
  77. package/lib/models/protocols/pure/v1/transformation/pureGraph/V1_DSLPersistence_GraphBuilderHelper.d.ts +2 -0
  78. package/lib/models/protocols/pure/v1/transformation/pureGraph/V1_DSLPersistence_GraphBuilderHelper.d.ts.map +1 -1
  79. package/lib/models/protocols/pure/v1/transformation/pureGraph/V1_DSLPersistence_GraphBuilderHelper.js +2 -1
  80. package/lib/models/protocols/pure/v1/transformation/pureGraph/V1_DSLPersistence_GraphBuilderHelper.js.map +1 -1
  81. package/lib/models/protocols/pure/v1/transformation/pureGraph/from/V1_PersistenceContextTransformer.d.ts +36 -0
  82. package/lib/models/protocols/pure/v1/transformation/pureGraph/from/V1_PersistenceContextTransformer.d.ts.map +1 -0
  83. package/lib/models/protocols/pure/v1/transformation/pureGraph/from/V1_PersistenceContextTransformer.js +75 -0
  84. package/lib/models/protocols/pure/v1/transformation/pureGraph/from/V1_PersistenceContextTransformer.js.map +1 -0
  85. package/lib/models/protocols/pure/v1/transformation/pureGraph/from/V1_PersistenceTransformer.d.ts.map +1 -1
  86. package/lib/models/protocols/pure/v1/transformation/pureGraph/from/V1_PersistenceTransformer.js +6 -1
  87. package/lib/models/protocols/pure/v1/transformation/pureGraph/from/V1_PersistenceTransformer.js.map +1 -1
  88. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_PersistenceBuilder.d.ts.map +1 -1
  89. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_PersistenceBuilder.js +6 -1
  90. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_PersistenceBuilder.js.map +1 -1
  91. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_PersistenceContextBuilder.d.ts +35 -0
  92. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_PersistenceContextBuilder.d.ts.map +1 -0
  93. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_PersistenceContextBuilder.js +76 -0
  94. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_PersistenceContextBuilder.js.map +1 -0
  95. package/lib/models/protocols/pure/v1/transformation/pureProtocol/V1_DSLPersistenceContext_ProtocolHelper.d.ts +31 -0
  96. package/lib/models/protocols/pure/v1/transformation/pureProtocol/V1_DSLPersistenceContext_ProtocolHelper.d.ts.map +1 -0
  97. package/lib/models/protocols/pure/v1/transformation/pureProtocol/V1_DSLPersistenceContext_ProtocolHelper.js +118 -0
  98. package/lib/models/protocols/pure/v1/transformation/pureProtocol/V1_DSLPersistenceContext_ProtocolHelper.js.map +1 -0
  99. package/lib/models/protocols/pure/v1/transformation/pureProtocol/V1_DSLPersistence_ProtocolHelper.d.ts +3 -3
  100. package/lib/models/protocols/pure/v1/transformation/pureProtocol/V1_DSLPersistence_ProtocolHelper.d.ts.map +1 -1
  101. package/lib/models/protocols/pure/v1/transformation/pureProtocol/V1_DSLPersistence_ProtocolHelper.js +3 -5
  102. package/lib/models/protocols/pure/v1/transformation/pureProtocol/V1_DSLPersistence_ProtocolHelper.js.map +1 -1
  103. package/lib/package.json +1 -1
  104. package/package.json +5 -5
  105. package/src/components/studio/DSLPersistence_CodeSnippets.ts +6 -1
  106. package/src/components/studio/DSLPersistence_LegendStudioDocumentation.ts +1 -0
  107. package/src/components/studio/DSLPersistence_LegendStudioPlugin.tsx +44 -5
  108. package/src/graph/DSLPersistence_PureGraphPlugin.ts +2 -1
  109. package/src/graphManager/DSLPersistence_GraphManagerHelper.ts +20 -0
  110. package/src/graphManager/DSLPersistence_PureGraphManagerPlugin.ts +12 -1
  111. package/src/graphManager/action/changeDetection/DSLPersistenceContext_ObserverHelper.ts +38 -0
  112. package/src/index.ts +13 -1
  113. package/src/models/DSLPersistence_ModelUtils.ts +14 -0
  114. package/src/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistenceContext.ts +50 -0
  115. package/src/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistencePlatform.ts +30 -0
  116. package/src/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_ServiceParameter.ts +61 -0
  117. package/src/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_Sink.ts +8 -2
  118. package/src/models/protocols/pure/DSLPersistence_PureProtocolProcessorPlugin.ts +52 -0
  119. package/src/models/protocols/pure/DSLPersistence_PureProtocolProcessorPlugin_Extension.ts +57 -0
  120. package/src/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_PersistenceContext.ts +51 -0
  121. package/src/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_PersistencePlatform.ts +31 -0
  122. package/src/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_ServiceParameter.ts +64 -0
  123. package/src/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_Sink.ts +7 -2
  124. package/src/models/protocols/pure/v1/transformation/pureGraph/V1_DSLPersistence_GraphBuilderHelper.ts +13 -1
  125. package/src/models/protocols/pure/v1/transformation/pureGraph/from/V1_PersistenceContextTransformer.ts +141 -0
  126. package/src/models/protocols/pure/v1/transformation/pureGraph/from/V1_PersistenceTransformer.ts +10 -5
  127. package/src/models/protocols/pure/v1/transformation/pureGraph/to/V1_PersistenceBuilder.ts +12 -3
  128. package/src/models/protocols/pure/v1/transformation/pureGraph/to/V1_PersistenceContextBuilder.ts +151 -0
  129. package/src/models/protocols/pure/v1/transformation/pureProtocol/V1_DSLPersistenceContext_ProtocolHelper.ts +242 -0
  130. package/src/models/protocols/pure/v1/transformation/pureProtocol/V1_DSLPersistence_ProtocolHelper.ts +20 -31
  131. package/tsconfig.json +11 -0
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Copyright (c) 2020-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import type { PersistenceContext } from '../../../models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistenceContext.js';
18
+ import {
19
+ observe_Abstract_PackageableElement,
20
+ skipObserved,
21
+ } from '@finos/legend-graph';
22
+ import { makeObservable, observable, override } from 'mobx';
23
+
24
+ export const observe_PersistenceContext = skipObserved(
25
+ (metamodel: PersistenceContext): PersistenceContext => {
26
+ observe_Abstract_PackageableElement(metamodel);
27
+
28
+ makeObservable<PersistenceContext, '_elementHashCode'>(metamodel, {
29
+ persistence: observable,
30
+ platform: observable,
31
+ serviceParameters: observable,
32
+ sinkConnection: observable,
33
+ _elementHashCode: override,
34
+ });
35
+
36
+ return metamodel;
37
+ },
38
+ );
package/src/index.ts CHANGED
@@ -21,11 +21,23 @@ export { DSLPersistence_LegendStudioPlugin } from './components/studio/DSLPersis
21
21
 
22
22
  // metamodels
23
23
  export { Persistence } from './models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_Persistence.js';
24
+ export { PersistenceContext } from './models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistenceContext.js';
25
+ export { PersistencePlatform } from './models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistencePlatform.js';
24
26
 
25
27
  // v1 protocols
26
28
  export { V1_Persistence } from './models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_Persistence.js';
29
+ export { V1_PersistenceContext } from './models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_PersistenceContext.js';
30
+ export { V1_PersistencePlatform } from './models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_PersistencePlatform.js';
27
31
 
28
32
  // ---------- TRANSFORMATION ----------
29
33
 
30
- export { V1_transformPersistence } from './models/protocols/pure/v1/transformation/pureGraph/from/V1_PersistenceTransformer.js';
34
+ // extension
35
+ export * from './models/protocols/pure/DSLPersistence_PureProtocolProcessorPlugin_Extension.js';
36
+
37
+ // builders
31
38
  export { V1_buildPersistence } from './models/protocols/pure/v1/transformation/pureGraph/to/V1_PersistenceBuilder.js';
39
+ export { V1_buildPersistenceContext } from './models/protocols/pure/v1/transformation/pureGraph/to/V1_PersistenceContextBuilder.js';
40
+
41
+ // transformers
42
+ export { V1_transformPersistence } from './models/protocols/pure/v1/transformation/pureGraph/from/V1_PersistenceTransformer.js';
43
+ export { V1_transformPersistenceContext } from './models/protocols/pure/v1/transformation/pureGraph/from/V1_PersistenceContextTransformer.js';
@@ -15,6 +15,20 @@
15
15
  */
16
16
 
17
17
  export enum PERSISTENCE_HASH_STRUCTURE {
18
+ // ----- PERSISTENCE CONTEXT -----
19
+
20
+ PERSISTENCE_CONTEXT = 'PERSISTENCE_CONTEXT',
21
+
22
+ // platform
23
+ DEFAULT_PERSISTENCE_PLATFORM = 'DEFAULT_PERSISTENCE_PLATFORM',
24
+
25
+ // service parameter
26
+ SERVICE_PARAMETER = 'SERVICE_PARAMETER',
27
+ PRIMITIVE_TYPE_VALUE_SERVICE_PARAMETER = 'PRIMITIVE_TYPE_VALUE_SERVICE_PARAMETER',
28
+ CONNECTION_VALUE_SERVICE_PARAMETER = 'CONNECTION_VALUE_SERVICE_PARAMETER',
29
+
30
+ // ----- PERSISTENCE -----
31
+
18
32
  PERSISTENCE = 'PERSISTENCE',
19
33
 
20
34
  // trigger
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Copyright (c) 2020-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import type { Persistence } from './DSLPersistence_Persistence.js';
18
+ import type { PersistencePlatform } from './DSLPersistence_PersistencePlatform.js';
19
+ import type { ServiceParameter } from './DSLPersistence_ServiceParameter.js';
20
+ import { PERSISTENCE_HASH_STRUCTURE } from '../../../../../DSLPersistence_ModelUtils.js';
21
+ import {
22
+ type Connection,
23
+ PackageableElement,
24
+ type PackageableElementReference,
25
+ type PackageableElementVisitor,
26
+ } from '@finos/legend-graph';
27
+ import { type Hashable, hashArray } from '@finos/legend-shared';
28
+
29
+ export class PersistenceContext extends PackageableElement implements Hashable {
30
+ persistence!: PackageableElementReference<Persistence>;
31
+ platform!: PersistencePlatform;
32
+ serviceParameters: ServiceParameter[] = [];
33
+ sinkConnection?: Connection;
34
+
35
+ protected override get _elementHashCode(): string {
36
+ return hashArray([
37
+ PERSISTENCE_HASH_STRUCTURE.PERSISTENCE_CONTEXT,
38
+ this.persistence.valueForSerialization ?? '',
39
+ this.platform,
40
+ hashArray(this.serviceParameters),
41
+ this.sinkConnection ?? '',
42
+ ]);
43
+ }
44
+
45
+ accept_PackageableElementVisitor<T>(
46
+ visitor: PackageableElementVisitor<T>,
47
+ ): T {
48
+ return visitor.visit_PackageableElement(this);
49
+ }
50
+ }
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Copyright (c) 2020-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import { PERSISTENCE_HASH_STRUCTURE } from '../../../../../DSLPersistence_ModelUtils.js';
18
+ import { type Hashable, hashArray } from '@finos/legend-shared';
19
+
20
+ export abstract class PersistencePlatform implements Hashable {
21
+ abstract get hashCode(): string;
22
+ }
23
+ export class DefaultPersistencePlatform
24
+ extends PersistencePlatform
25
+ implements Hashable
26
+ {
27
+ override get hashCode(): string {
28
+ return hashArray([PERSISTENCE_HASH_STRUCTURE.DEFAULT_PERSISTENCE_PLATFORM]);
29
+ }
30
+ }
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Copyright (c) 2020-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import { PERSISTENCE_HASH_STRUCTURE } from '../../../../../DSLPersistence_ModelUtils.js';
18
+ import type { Connection, ValueSpecification } from '@finos/legend-graph';
19
+ import { type Hashable, hashArray } from '@finos/legend-shared';
20
+
21
+ export class ServiceParameter implements Hashable {
22
+ name!: string;
23
+ value!: ServiceParameterValue;
24
+
25
+ get hashCode(): string {
26
+ return hashArray([
27
+ PERSISTENCE_HASH_STRUCTURE.SERVICE_PARAMETER,
28
+ this.name,
29
+ this.value,
30
+ ]);
31
+ }
32
+ }
33
+
34
+ export abstract class ServiceParameterValue implements Hashable {
35
+ abstract get hashCode(): string;
36
+ }
37
+
38
+ export class PrimitiveTypeValue
39
+ extends ServiceParameterValue
40
+ implements Hashable
41
+ {
42
+ primitiveType!: ValueSpecification;
43
+
44
+ override get hashCode(): string {
45
+ return hashArray([
46
+ PERSISTENCE_HASH_STRUCTURE.PRIMITIVE_TYPE_VALUE_SERVICE_PARAMETER,
47
+ //TODO: ledav -- hash value specification
48
+ ]);
49
+ }
50
+ }
51
+
52
+ export class ConnectionValue extends ServiceParameterValue implements Hashable {
53
+ connection!: Connection;
54
+
55
+ override get hashCode(): string {
56
+ return hashArray([
57
+ PERSISTENCE_HASH_STRUCTURE.CONNECTION_VALUE_SERVICE_PARAMETER,
58
+ this.connection,
59
+ ]);
60
+ }
61
+ }
@@ -18,6 +18,7 @@ import { PERSISTENCE_HASH_STRUCTURE } from '../../../../../DSLPersistence_ModelU
18
18
  import type {
19
19
  Binding,
20
20
  Connection,
21
+ Database,
21
22
  PackageableElementReference,
22
23
  } from '@finos/legend-graph';
23
24
  import { type Hashable, hashArray } from '@finos/legend-shared';
@@ -27,11 +28,15 @@ export abstract class Sink implements Hashable {
27
28
  }
28
29
 
29
30
  export class RelationalSink extends Sink implements Hashable {
31
+ //TODO: ledav -- make required once persistence changes are rolled out in engine
32
+ database?: PackageableElementReference<Database>;
33
+ //TODO: ledav -- remove once persistence changes are rolled out in engine
30
34
  connection?: Connection;
31
35
 
32
36
  override get hashCode(): string {
33
37
  return hashArray([
34
38
  PERSISTENCE_HASH_STRUCTURE.RELATIONAL_SINK,
39
+ this.database?.valueForSerialization ?? '',
35
40
  this.connection ?? '',
36
41
  ]);
37
42
  }
@@ -39,13 +44,14 @@ export class RelationalSink extends Sink implements Hashable {
39
44
 
40
45
  export class ObjectStorageSink extends Sink implements Hashable {
41
46
  binding!: PackageableElementReference<Binding>;
42
- connection!: Connection;
47
+ //TODO: ledav -- remove once persistence changes are rolled out in engine
48
+ connection?: Connection;
43
49
 
44
50
  override get hashCode(): string {
45
51
  return hashArray([
46
52
  PERSISTENCE_HASH_STRUCTURE.OBJECT_STORAGE_SINK,
47
53
  this.binding.valueForSerialization ?? '',
48
- this.connection,
54
+ this.connection ?? '',
49
55
  ]);
50
56
  }
51
57
  }
@@ -16,13 +16,21 @@
16
16
 
17
17
  import packageJson from '../../../../package.json';
18
18
  import { Persistence } from '../../metamodels/pure/model/packageableElements/persistence/DSLPersistence_Persistence.js';
19
+ import { PersistenceContext } from '../../metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistenceContext.js';
19
20
  import { V1_Persistence } from './v1/model/packageableElements/persistence/V1_DSLPersistence_Persistence.js';
21
+ import { V1_PersistenceContext } from './v1/model/packageableElements/persistence/V1_DSLPersistence_PersistenceContext.js';
20
22
  import {
21
23
  V1_PERSISTENCE_ELEMENT_PROTOCOL_TYPE,
22
24
  V1_persistenceModelSchema,
23
25
  } from './v1/transformation/pureProtocol/V1_DSLPersistence_ProtocolHelper.js';
26
+ import {
27
+ V1_PERSISTENCE_CONTEXT_ELEMENT_PROTOCOL_TYPE,
28
+ V1_persistenceContextModelSchema,
29
+ } from './v1/transformation/pureProtocol/V1_DSLPersistenceContext_ProtocolHelper.js';
24
30
  import { V1_buildPersistence } from './v1/transformation/pureGraph/to/V1_PersistenceBuilder.js';
31
+ import { V1_buildPersistenceContext } from './v1/transformation/pureGraph/to/V1_PersistenceContextBuilder.js';
25
32
  import { V1_transformPersistence } from './v1/transformation/pureGraph/from/V1_PersistenceTransformer.js';
33
+ import { V1_transformPersistenceContext } from './v1/transformation/pureGraph/from/V1_PersistenceContextTransformer.js';
26
34
  import {
27
35
  type PackageableElement,
28
36
  PureProtocolProcessorPlugin,
@@ -42,6 +50,9 @@ import { deserialize, serialize } from 'serializr';
42
50
  export const PERSISTENCE_ELEMENT_CLASSIFIER_PATH =
43
51
  'meta::pure::persistence::metamodel::Persistence';
44
52
 
53
+ export const PERSISTENCE_CONTEXT_ELEMENT_CLASSIFIER_PATH =
54
+ 'meta::pure::persistence::metamodel::PersistenceContext';
55
+
45
56
  export class DSLPersistence_PureProtocolProcessorPlugin extends PureProtocolProcessorPlugin {
46
57
  constructor() {
47
58
  super(
@@ -80,6 +91,34 @@ export class DSLPersistence_PureProtocolProcessorPlugin extends PureProtocolProc
80
91
  V1_buildPersistence(elementProtocol, context);
81
92
  },
82
93
  }),
94
+ new V1_ElementBuilder<V1_PersistenceContext>({
95
+ elementClassName: 'PersistenceContext',
96
+ _class: V1_PersistenceContext,
97
+ firstPass: (
98
+ elementProtocol: V1_PackageableElement,
99
+ context: V1_GraphBuilderContext,
100
+ ): PackageableElement => {
101
+ assertType(elementProtocol, V1_PersistenceContext);
102
+ const element = new PersistenceContext(elementProtocol.name);
103
+ const path = V1_buildFullPath(
104
+ elementProtocol.package,
105
+ elementProtocol.name,
106
+ );
107
+ context.currentSubGraph.setOwnElementInExtension(
108
+ path,
109
+ element,
110
+ PersistenceContext,
111
+ );
112
+ return element;
113
+ },
114
+ secondPass: (
115
+ elementProtocol: V1_PackageableElement,
116
+ context: V1_GraphBuilderContext,
117
+ ): void => {
118
+ assertType(elementProtocol, V1_PersistenceContext);
119
+ V1_buildPersistenceContext(elementProtocol, context);
120
+ },
121
+ }),
83
122
  ];
84
123
  }
85
124
 
@@ -88,6 +127,8 @@ export class DSLPersistence_PureProtocolProcessorPlugin extends PureProtocolProc
88
127
  (elementProtocol: V1_PackageableElement): string | undefined => {
89
128
  if (elementProtocol instanceof V1_Persistence) {
90
129
  return PERSISTENCE_ELEMENT_CLASSIFIER_PATH;
130
+ } else if (elementProtocol instanceof V1_PersistenceContext) {
131
+ return PERSISTENCE_CONTEXT_ELEMENT_CLASSIFIER_PATH;
91
132
  }
92
133
  return undefined;
93
134
  },
@@ -102,6 +143,11 @@ export class DSLPersistence_PureProtocolProcessorPlugin extends PureProtocolProc
102
143
  ): PlainObject<V1_PackageableElement> | undefined => {
103
144
  if (elementProtocol instanceof V1_Persistence) {
104
145
  return serialize(V1_persistenceModelSchema(plugins), elementProtocol);
146
+ } else if (elementProtocol instanceof V1_PersistenceContext) {
147
+ return serialize(
148
+ V1_persistenceContextModelSchema(plugins),
149
+ elementProtocol,
150
+ );
105
151
  }
106
152
  return undefined;
107
153
  },
@@ -116,6 +162,10 @@ export class DSLPersistence_PureProtocolProcessorPlugin extends PureProtocolProc
116
162
  ): V1_PackageableElement | undefined => {
117
163
  if (json._type === V1_PERSISTENCE_ELEMENT_PROTOCOL_TYPE) {
118
164
  return deserialize(V1_persistenceModelSchema(plugins), json);
165
+ } else if (
166
+ json._type === V1_PERSISTENCE_CONTEXT_ELEMENT_PROTOCOL_TYPE
167
+ ) {
168
+ return deserialize(V1_persistenceContextModelSchema(plugins), json);
119
169
  }
120
170
  return undefined;
121
171
  },
@@ -130,6 +180,8 @@ export class DSLPersistence_PureProtocolProcessorPlugin extends PureProtocolProc
130
180
  ): V1_PackageableElement | undefined => {
131
181
  if (metamodel instanceof Persistence) {
132
182
  return V1_transformPersistence(metamodel, context);
183
+ } else if (metamodel instanceof PersistenceContext) {
184
+ return V1_transformPersistenceContext(metamodel, context);
133
185
  }
134
186
  return undefined;
135
187
  },
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Copyright (c) 2020-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import type { V1_PersistencePlatform } from './v1/model/packageableElements/persistence/V1_DSLPersistence_PersistencePlatform.js';
18
+ import type { PersistencePlatform } from '../../metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistencePlatform.js';
19
+ import type {
20
+ PureProtocolProcessorPlugin,
21
+ V1_GraphBuilderContext,
22
+ V1_GraphTransformerContext,
23
+ } from '@finos/legend-graph';
24
+ import type { PlainObject } from '@finos/legend-shared';
25
+
26
+ // types: persistence platform
27
+
28
+ export type V1_PersistencePlatformBuilder = (
29
+ protocol: V1_PersistencePlatform,
30
+ context: V1_GraphBuilderContext,
31
+ ) => PersistencePlatform | undefined;
32
+
33
+ export type V1_PersistencePlatformTransformer = (
34
+ metamodel: PersistencePlatform,
35
+ context: V1_GraphTransformerContext,
36
+ ) => V1_PersistencePlatform | undefined;
37
+
38
+ export type V1_PersistencePlatformProtocolSerializer = (
39
+ protocol: V1_PersistencePlatform,
40
+ ) => PlainObject<V1_PersistencePlatform> | undefined;
41
+
42
+ export type V1_PersistencePlatformProtocolDeserializer = (
43
+ json: PlainObject<V1_PersistencePlatform>,
44
+ ) => V1_PersistencePlatform | undefined;
45
+
46
+ export interface DSLPersistence_PureProtocolProcessorPlugin_Extension
47
+ extends PureProtocolProcessorPlugin {
48
+ // extension hooks: persistence platform
49
+
50
+ V1_getExtraPersistencePlatformBuilders?(): V1_PersistencePlatformBuilder[];
51
+
52
+ V1_getExtraPersistencePlatformTransformers?(): V1_PersistencePlatformTransformer[];
53
+
54
+ V1_getExtraPersistencePlatformProtocolSerializers?(): V1_PersistencePlatformProtocolSerializer[];
55
+
56
+ V1_getExtraPersistencePlatformProtocolDeserializers?(): V1_PersistencePlatformProtocolDeserializer[];
57
+ }
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Copyright (c) 2020-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import { PERSISTENCE_HASH_STRUCTURE } from '../../../../../../DSLPersistence_ModelUtils.js';
18
+ import type { V1_PersistencePlatform } from './V1_DSLPersistence_PersistencePlatform.js';
19
+ import type { V1_ServiceParameter } from './V1_DSLPersistence_ServiceParameter.js';
20
+ import {
21
+ type V1_Connection,
22
+ V1_PackageableElement,
23
+ type V1_PackageableElementVisitor,
24
+ } from '@finos/legend-graph';
25
+ import { type Hashable, hashArray } from '@finos/legend-shared';
26
+
27
+ export class V1_PersistenceContext
28
+ extends V1_PackageableElement
29
+ implements Hashable
30
+ {
31
+ persistence!: string;
32
+ platform!: V1_PersistencePlatform;
33
+ serviceParameters: V1_ServiceParameter[] = [];
34
+ sinkConnection?: V1_Connection;
35
+
36
+ override get hashCode(): string {
37
+ return hashArray([
38
+ PERSISTENCE_HASH_STRUCTURE.PERSISTENCE_CONTEXT,
39
+ this.persistence,
40
+ this.platform,
41
+ hashArray(this.serviceParameters),
42
+ this.sinkConnection ?? '',
43
+ ]);
44
+ }
45
+
46
+ accept_PackageableElementVisitor<T>(
47
+ visitor: V1_PackageableElementVisitor<T>,
48
+ ): T {
49
+ return visitor.visit_PackageableElement(this);
50
+ }
51
+ }
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Copyright (c) 2020-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import { PERSISTENCE_HASH_STRUCTURE } from '../../../../../../DSLPersistence_ModelUtils.js';
18
+ import { type Hashable, hashArray } from '@finos/legend-shared';
19
+
20
+ export abstract class V1_PersistencePlatform implements Hashable {
21
+ abstract get hashCode(): string;
22
+ }
23
+
24
+ export class V1_DefaultPersistencePlatform
25
+ extends V1_PersistencePlatform
26
+ implements Hashable
27
+ {
28
+ override get hashCode(): string {
29
+ return hashArray([PERSISTENCE_HASH_STRUCTURE.DEFAULT_PERSISTENCE_PLATFORM]);
30
+ }
31
+ }
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Copyright (c) 2020-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import { PERSISTENCE_HASH_STRUCTURE } from '../../../../../../DSLPersistence_ModelUtils.js';
18
+ import type { V1_Connection, V1_ValueSpecification } from '@finos/legend-graph';
19
+ import { type Hashable, hashArray } from '@finos/legend-shared';
20
+
21
+ export class V1_ServiceParameter implements Hashable {
22
+ name!: string;
23
+ value!: V1_ServiceParameterValue;
24
+
25
+ get hashCode(): string {
26
+ return hashArray([
27
+ PERSISTENCE_HASH_STRUCTURE.SERVICE_PARAMETER,
28
+ this.name,
29
+ this.value,
30
+ ]);
31
+ }
32
+ }
33
+
34
+ export abstract class V1_ServiceParameterValue implements Hashable {
35
+ abstract get hashCode(): string;
36
+ }
37
+
38
+ export class V1_PrimitiveTypeValue
39
+ extends V1_ServiceParameterValue
40
+ implements Hashable
41
+ {
42
+ primitiveType!: V1_ValueSpecification;
43
+
44
+ override get hashCode(): string {
45
+ return hashArray([
46
+ PERSISTENCE_HASH_STRUCTURE.PRIMITIVE_TYPE_VALUE_SERVICE_PARAMETER,
47
+ //TODO: ledav -- hash value specification
48
+ ]);
49
+ }
50
+ }
51
+
52
+ export class V1_ConnectionValue
53
+ extends V1_ServiceParameterValue
54
+ implements Hashable
55
+ {
56
+ connection!: V1_Connection;
57
+
58
+ override get hashCode(): string {
59
+ return hashArray([
60
+ PERSISTENCE_HASH_STRUCTURE.CONNECTION_VALUE_SERVICE_PARAMETER,
61
+ this.connection,
62
+ ]);
63
+ }
64
+ }
@@ -23,11 +23,15 @@ export abstract class V1_Sink implements Hashable {
23
23
  }
24
24
 
25
25
  export class V1_RelationalSink extends V1_Sink implements Hashable {
26
+ //TODO: ledav -- make required once persistence changes are rolled out in engine
27
+ database?: string;
28
+ //TODO: ledav -- remove once persistence changes are rolled out in engine
26
29
  connection?: V1_Connection;
27
30
 
28
31
  override get hashCode(): string {
29
32
  return hashArray([
30
33
  PERSISTENCE_HASH_STRUCTURE.RELATIONAL_SINK,
34
+ this.database ?? '',
31
35
  this.connection ?? '',
32
36
  ]);
33
37
  }
@@ -35,13 +39,14 @@ export class V1_RelationalSink extends V1_Sink implements Hashable {
35
39
 
36
40
  export class V1_ObjectStorageSink extends V1_Sink implements Hashable {
37
41
  binding!: string;
38
- connection!: V1_Connection;
42
+ //TODO: ledav -- remove once persistence changes are rolled out in engine
43
+ connection?: V1_Connection;
39
44
 
40
45
  override get hashCode(): string {
41
46
  return hashArray([
42
47
  PERSISTENCE_HASH_STRUCTURE.OBJECT_STORAGE_SINK,
43
48
  this.binding,
44
- this.connection,
49
+ this.connection ?? '',
45
50
  ]);
46
51
  }
47
52
  }
@@ -15,7 +15,11 @@
15
15
  */
16
16
 
17
17
  import type { Persistence } from '../../../../../metamodels/pure/model/packageableElements/persistence/DSLPersistence_Persistence.js';
18
- import { getPersistence } from '../../../../../../graphManager/DSLPersistence_GraphManagerHelper.js';
18
+ import type { PersistenceContext } from '../../../../../metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistenceContext.js';
19
+ import {
20
+ getPersistence,
21
+ getPersistenceContext,
22
+ } from '../../../../../../graphManager/DSLPersistence_GraphManagerHelper.js';
19
23
  import type {
20
24
  PackageableElementImplicitReference,
21
25
  V1_GraphBuilderContext,
@@ -28,3 +32,11 @@ export const V1_resolvePersistence = (
28
32
  context.createImplicitPackageableElementReference(path, (_path: string) =>
29
33
  getPersistence(_path, context.graph),
30
34
  );
35
+
36
+ export const V1_resolvePersistenceContext = (
37
+ path: string,
38
+ context: V1_GraphBuilderContext,
39
+ ): PackageableElementImplicitReference<PersistenceContext> =>
40
+ context.createImplicitPackageableElementReference(path, (_path: string) =>
41
+ getPersistenceContext(_path, context.graph),
42
+ );