@finos/legend-extension-dsl-persistence 2.0.8 → 2.0.11

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 (139) 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_LegendStudioPlugin.d.ts → DSLPersistence_LegendStudioApplicationPlugin.d.ts} +3 -3
  6. package/lib/components/studio/DSLPersistence_LegendStudioApplicationPlugin.d.ts.map +1 -0
  7. package/lib/components/studio/{DSLPersistence_LegendStudioPlugin.js → DSLPersistence_LegendStudioApplicationPlugin.js} +39 -8
  8. package/lib/components/studio/DSLPersistence_LegendStudioApplicationPlugin.js.map +1 -0
  9. package/lib/components/studio/DSLPersistence_LegendStudioDocumentation.d.ts +2 -1
  10. package/lib/components/studio/DSLPersistence_LegendStudioDocumentation.d.ts.map +1 -1
  11. package/lib/components/studio/DSLPersistence_LegendStudioDocumentation.js +1 -0
  12. package/lib/components/studio/DSLPersistence_LegendStudioDocumentation.js.map +1 -1
  13. package/lib/graph/DSLPersistence_PureGraphPlugin.d.ts.map +1 -1
  14. package/lib/graph/DSLPersistence_PureGraphPlugin.js +2 -1
  15. package/lib/graph/DSLPersistence_PureGraphPlugin.js.map +1 -1
  16. package/lib/graphManager/DSLPersistence_GraphManagerHelper.d.ts +3 -0
  17. package/lib/graphManager/DSLPersistence_GraphManagerHelper.d.ts.map +1 -1
  18. package/lib/graphManager/DSLPersistence_GraphManagerHelper.js +3 -0
  19. package/lib/graphManager/DSLPersistence_GraphManagerHelper.js.map +1 -1
  20. package/lib/graphManager/DSLPersistence_PureGraphManagerPlugin.d.ts +1 -0
  21. package/lib/graphManager/DSLPersistence_PureGraphManagerPlugin.d.ts.map +1 -1
  22. package/lib/graphManager/DSLPersistence_PureGraphManagerPlugin.js +13 -1
  23. package/lib/graphManager/DSLPersistence_PureGraphManagerPlugin.js.map +1 -1
  24. package/lib/graphManager/action/changeDetection/DSLPersistenceContext_ObserverHelper.d.ts +18 -0
  25. package/lib/graphManager/action/changeDetection/DSLPersistenceContext_ObserverHelper.d.ts.map +1 -0
  26. package/lib/graphManager/action/changeDetection/DSLPersistenceContext_ObserverHelper.js +29 -0
  27. package/lib/graphManager/action/changeDetection/DSLPersistenceContext_ObserverHelper.js.map +1 -0
  28. package/lib/index.css +2 -2
  29. package/lib/index.css.map +1 -1
  30. package/lib/index.d.ts +9 -2
  31. package/lib/index.d.ts.map +1 -1
  32. package/lib/index.js +12 -2
  33. package/lib/index.js.map +1 -1
  34. package/lib/models/DSLPersistence_ModelUtils.d.ts +5 -0
  35. package/lib/models/DSLPersistence_ModelUtils.d.ts.map +1 -1
  36. package/lib/models/DSLPersistence_ModelUtils.js +9 -0
  37. package/lib/models/DSLPersistence_ModelUtils.js.map +1 -1
  38. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistenceContext.d.ts +29 -0
  39. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistenceContext.d.ts.map +1 -0
  40. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistenceContext.js +37 -0
  41. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistenceContext.js.map +1 -0
  42. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistencePlatform.d.ts +23 -0
  43. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistencePlatform.d.ts.map +1 -0
  44. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistencePlatform.js +25 -0
  45. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistencePlatform.js.map +1 -0
  46. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_ServiceParameter.d.ts +34 -0
  47. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_ServiceParameter.d.ts.map +1 -0
  48. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_ServiceParameter.js +49 -0
  49. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_ServiceParameter.js.map +1 -0
  50. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_Sink.d.ts +3 -2
  51. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_Sink.d.ts.map +1 -1
  52. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_Sink.js +6 -1
  53. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_Sink.js.map +1 -1
  54. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_TargetShape.d.ts +2 -2
  55. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_TargetShape.d.ts.map +1 -1
  56. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_TargetShape.js +1 -1
  57. package/lib/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_TargetShape.js.map +1 -1
  58. package/lib/models/protocols/pure/DSLPersistence_PureProtocolProcessorPlugin.d.ts +1 -0
  59. package/lib/models/protocols/pure/DSLPersistence_PureProtocolProcessorPlugin.d.ts.map +1 -1
  60. package/lib/models/protocols/pure/DSLPersistence_PureProtocolProcessorPlugin.js +33 -0
  61. package/lib/models/protocols/pure/DSLPersistence_PureProtocolProcessorPlugin.js.map +1 -1
  62. package/lib/models/protocols/pure/DSLPersistence_PureProtocolProcessorPlugin_Extension.d.ts +30 -0
  63. package/lib/models/protocols/pure/DSLPersistence_PureProtocolProcessorPlugin_Extension.d.ts.map +1 -0
  64. package/lib/models/protocols/pure/DSLPersistence_PureProtocolProcessorPlugin_Extension.js +17 -0
  65. package/lib/models/protocols/pure/DSLPersistence_PureProtocolProcessorPlugin_Extension.js.map +1 -0
  66. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_PersistenceContext.d.ts +28 -0
  67. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_PersistenceContext.d.ts.map +1 -0
  68. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_PersistenceContext.js +37 -0
  69. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_PersistenceContext.js.map +1 -0
  70. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_PersistencePlatform.d.ts +23 -0
  71. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_PersistencePlatform.d.ts.map +1 -0
  72. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_PersistencePlatform.js +25 -0
  73. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_PersistencePlatform.js.map +1 -0
  74. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_ServiceParameter.d.ts +34 -0
  75. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_ServiceParameter.d.ts.map +1 -0
  76. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_ServiceParameter.js +49 -0
  77. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_ServiceParameter.js.map +1 -0
  78. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_Sink.d.ts +2 -1
  79. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_Sink.d.ts.map +1 -1
  80. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_Sink.js +6 -1
  81. package/lib/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_Sink.js.map +1 -1
  82. package/lib/models/protocols/pure/v1/transformation/pureGraph/V1_DSLPersistence_GraphBuilderHelper.d.ts +2 -0
  83. package/lib/models/protocols/pure/v1/transformation/pureGraph/V1_DSLPersistence_GraphBuilderHelper.d.ts.map +1 -1
  84. package/lib/models/protocols/pure/v1/transformation/pureGraph/V1_DSLPersistence_GraphBuilderHelper.js +2 -1
  85. package/lib/models/protocols/pure/v1/transformation/pureGraph/V1_DSLPersistence_GraphBuilderHelper.js.map +1 -1
  86. package/lib/models/protocols/pure/v1/transformation/pureGraph/from/V1_PersistenceContextTransformer.d.ts +36 -0
  87. package/lib/models/protocols/pure/v1/transformation/pureGraph/from/V1_PersistenceContextTransformer.d.ts.map +1 -0
  88. package/lib/models/protocols/pure/v1/transformation/pureGraph/from/V1_PersistenceContextTransformer.js +75 -0
  89. package/lib/models/protocols/pure/v1/transformation/pureGraph/from/V1_PersistenceContextTransformer.js.map +1 -0
  90. package/lib/models/protocols/pure/v1/transformation/pureGraph/from/V1_PersistenceTransformer.d.ts.map +1 -1
  91. package/lib/models/protocols/pure/v1/transformation/pureGraph/from/V1_PersistenceTransformer.js +7 -2
  92. package/lib/models/protocols/pure/v1/transformation/pureGraph/from/V1_PersistenceTransformer.js.map +1 -1
  93. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_PersistenceBuilder.d.ts.map +1 -1
  94. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_PersistenceBuilder.js +11 -4
  95. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_PersistenceBuilder.js.map +1 -1
  96. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_PersistenceContextBuilder.d.ts +35 -0
  97. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_PersistenceContextBuilder.d.ts.map +1 -0
  98. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_PersistenceContextBuilder.js +74 -0
  99. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_PersistenceContextBuilder.js.map +1 -0
  100. package/lib/models/protocols/pure/v1/transformation/pureProtocol/V1_DSLPersistenceContext_ProtocolHelper.d.ts +31 -0
  101. package/lib/models/protocols/pure/v1/transformation/pureProtocol/V1_DSLPersistenceContext_ProtocolHelper.d.ts.map +1 -0
  102. package/lib/models/protocols/pure/v1/transformation/pureProtocol/V1_DSLPersistenceContext_ProtocolHelper.js +118 -0
  103. package/lib/models/protocols/pure/v1/transformation/pureProtocol/V1_DSLPersistenceContext_ProtocolHelper.js.map +1 -0
  104. package/lib/models/protocols/pure/v1/transformation/pureProtocol/V1_DSLPersistence_ProtocolHelper.d.ts +3 -3
  105. package/lib/models/protocols/pure/v1/transformation/pureProtocol/V1_DSLPersistence_ProtocolHelper.d.ts.map +1 -1
  106. package/lib/models/protocols/pure/v1/transformation/pureProtocol/V1_DSLPersistence_ProtocolHelper.js +3 -5
  107. package/lib/models/protocols/pure/v1/transformation/pureProtocol/V1_DSLPersistence_ProtocolHelper.js.map +1 -1
  108. package/lib/package.json +5 -5
  109. package/package.json +12 -12
  110. package/src/components/studio/DSLPersistence_CodeSnippets.ts +6 -1
  111. package/src/components/studio/{DSLPersistence_LegendStudioPlugin.tsx → DSLPersistence_LegendStudioApplicationPlugin.tsx} +51 -12
  112. package/src/components/studio/DSLPersistence_LegendStudioDocumentation.ts +1 -0
  113. package/src/graph/DSLPersistence_PureGraphPlugin.ts +2 -1
  114. package/src/graphManager/DSLPersistence_GraphManagerHelper.ts +20 -0
  115. package/src/graphManager/DSLPersistence_PureGraphManagerPlugin.ts +12 -1
  116. package/src/graphManager/action/changeDetection/DSLPersistenceContext_ObserverHelper.ts +38 -0
  117. package/src/index.ts +14 -2
  118. package/src/models/DSLPersistence_ModelUtils.ts +14 -0
  119. package/src/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistenceContext.ts +50 -0
  120. package/src/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistencePlatform.ts +30 -0
  121. package/src/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_ServiceParameter.ts +61 -0
  122. package/src/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_Sink.ts +8 -2
  123. package/src/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_TargetShape.ts +3 -7
  124. package/src/models/protocols/pure/DSLPersistence_PureProtocolProcessorPlugin.ts +52 -0
  125. package/src/models/protocols/pure/DSLPersistence_PureProtocolProcessorPlugin_Extension.ts +57 -0
  126. package/src/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_PersistenceContext.ts +51 -0
  127. package/src/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_PersistencePlatform.ts +31 -0
  128. package/src/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_ServiceParameter.ts +64 -0
  129. package/src/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_Sink.ts +7 -2
  130. package/src/models/protocols/pure/v1/transformation/pureGraph/V1_DSLPersistence_GraphBuilderHelper.ts +13 -1
  131. package/src/models/protocols/pure/v1/transformation/pureGraph/from/V1_PersistenceContextTransformer.ts +141 -0
  132. package/src/models/protocols/pure/v1/transformation/pureGraph/from/V1_PersistenceTransformer.ts +11 -6
  133. package/src/models/protocols/pure/v1/transformation/pureGraph/to/V1_PersistenceBuilder.ts +15 -12
  134. package/src/models/protocols/pure/v1/transformation/pureGraph/to/V1_PersistenceContextBuilder.ts +151 -0
  135. package/src/models/protocols/pure/v1/transformation/pureProtocol/V1_DSLPersistenceContext_ProtocolHelper.ts +242 -0
  136. package/src/models/protocols/pure/v1/transformation/pureProtocol/V1_DSLPersistence_ProtocolHelper.ts +20 -31
  137. package/tsconfig.json +12 -1
  138. package/lib/components/studio/DSLPersistence_LegendStudioPlugin.d.ts.map +0 -1
  139. package/lib/components/studio/DSLPersistence_LegendStudioPlugin.js.map +0 -1
@@ -0,0 +1,151 @@
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_PersistenceContext } from '../../../model/packageableElements/persistence/V1_DSLPersistence_PersistenceContext.js';
18
+ import {
19
+ type V1_PersistencePlatform,
20
+ V1_DefaultPersistencePlatform,
21
+ } from '../../../model/packageableElements/persistence/V1_DSLPersistence_PersistencePlatform.js';
22
+ import {
23
+ V1_ConnectionValue,
24
+ V1_PrimitiveTypeValue,
25
+ type V1_ServiceParameter,
26
+ type V1_ServiceParameterValue,
27
+ } from '../../../model/packageableElements/persistence/V1_DSLPersistence_ServiceParameter.js';
28
+ import type { Persistence } from '../../../../../../metamodels/pure/model/packageableElements/persistence/DSLPersistence_Persistence.js';
29
+ import {
30
+ DefaultPersistencePlatform,
31
+ type PersistencePlatform,
32
+ } from '../../../../../../metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistencePlatform.js';
33
+ import {
34
+ ConnectionValue,
35
+ PrimitiveTypeValue,
36
+ ServiceParameter,
37
+ type ServiceParameterValue,
38
+ } from '../../../../../../metamodels/pure/model/packageableElements/persistence/DSLPersistence_ServiceParameter.js';
39
+ import { getOwnPersistenceContext } from '../../../../../../../graphManager/DSLPersistence_GraphManagerHelper.js';
40
+ import type { DSLPersistence_PureProtocolProcessorPlugin_Extension } from '../../../../DSLPersistence_PureProtocolProcessorPlugin_Extension.js';
41
+ import {
42
+ type PackageableElementImplicitReference,
43
+ V1_buildFullPath,
44
+ V1_buildValueSpecification,
45
+ type V1_GraphBuilderContext,
46
+ V1_buildConnection,
47
+ } from '@finos/legend-graph';
48
+ import { UnsupportedOperationError } from '@finos/legend-shared';
49
+
50
+ /**********
51
+ * persistence platform
52
+ **********/
53
+
54
+ export const V1_buildPersistencePlatform = (
55
+ protocol: V1_PersistencePlatform,
56
+ context: V1_GraphBuilderContext,
57
+ ): PersistencePlatform => {
58
+ if (protocol instanceof V1_DefaultPersistencePlatform) {
59
+ return new DefaultPersistencePlatform();
60
+ }
61
+ const extraPersistencePlatformBuilders = context.extensions.plugins.flatMap(
62
+ (plugin) =>
63
+ (
64
+ plugin as DSLPersistence_PureProtocolProcessorPlugin_Extension
65
+ ).V1_getExtraPersistencePlatformBuilders?.() ?? [],
66
+ );
67
+ for (const builder of extraPersistencePlatformBuilders) {
68
+ const metamodel = builder(protocol, context);
69
+ if (metamodel) {
70
+ return metamodel;
71
+ }
72
+ }
73
+ throw new UnsupportedOperationError(
74
+ `Can't build persistence platform: no compatible builder available from plugins`,
75
+ protocol,
76
+ );
77
+ };
78
+
79
+ /**********
80
+ * service parameter
81
+ **********/
82
+
83
+ export const V1_buildServiceParameterValue = (
84
+ protocol: V1_ServiceParameterValue,
85
+ context: V1_GraphBuilderContext,
86
+ ): ServiceParameterValue => {
87
+ if (protocol instanceof V1_PrimitiveTypeValue) {
88
+ const serviceParameterValue = new PrimitiveTypeValue();
89
+ serviceParameterValue.primitiveType = V1_buildValueSpecification(
90
+ protocol.primitiveType,
91
+ context,
92
+ );
93
+ return serviceParameterValue;
94
+ } else if (protocol instanceof V1_ConnectionValue) {
95
+ const serviceParameterValue = new ConnectionValue();
96
+ serviceParameterValue.connection = V1_buildConnection(
97
+ protocol.connection,
98
+ context,
99
+ );
100
+ return serviceParameterValue;
101
+ }
102
+ throw new UnsupportedOperationError(
103
+ `Can't build service parameter value`,
104
+ protocol,
105
+ );
106
+ };
107
+
108
+ export const V1_buildServiceParameter = (
109
+ protocol: V1_ServiceParameter,
110
+ context: V1_GraphBuilderContext,
111
+ ): ServiceParameter => {
112
+ const serviceParameter = new ServiceParameter();
113
+ serviceParameter.name = protocol.name;
114
+ serviceParameter.value = V1_buildServiceParameterValue(
115
+ protocol.value,
116
+ context,
117
+ );
118
+ return serviceParameter;
119
+ };
120
+
121
+ /**********
122
+ * persistence context
123
+ **********/
124
+
125
+ export const V1_buildPersistenceContext = (
126
+ protocol: V1_PersistenceContext,
127
+ context: V1_GraphBuilderContext,
128
+ ): void => {
129
+ const path = V1_buildFullPath(protocol.package, protocol.name);
130
+ const persistenceContext = getOwnPersistenceContext(
131
+ path,
132
+ context.currentSubGraph,
133
+ );
134
+ persistenceContext.persistence = context.resolveElement(
135
+ protocol.persistence,
136
+ false,
137
+ ) as PackageableElementImplicitReference<Persistence>;
138
+ persistenceContext.platform = V1_buildPersistencePlatform(
139
+ protocol.platform,
140
+ context,
141
+ );
142
+ persistenceContext.serviceParameters = protocol.serviceParameters.map((sp) =>
143
+ V1_buildServiceParameter(sp, context),
144
+ );
145
+ if (protocol.sinkConnection) {
146
+ persistenceContext.sinkConnection = V1_buildConnection(
147
+ protocol.sinkConnection,
148
+ context,
149
+ );
150
+ }
151
+ };
@@ -0,0 +1,242 @@
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 { V1_PersistenceContext } from '../../model/packageableElements/persistence/V1_DSLPersistence_PersistenceContext.js';
18
+ import {
19
+ V1_DefaultPersistencePlatform,
20
+ type V1_PersistencePlatform,
21
+ } from '../../model/packageableElements/persistence/V1_DSLPersistence_PersistencePlatform.js';
22
+ import {
23
+ V1_ConnectionValue,
24
+ V1_PrimitiveTypeValue,
25
+ V1_ServiceParameter,
26
+ type V1_ServiceParameterValue,
27
+ } from '../../model/packageableElements/persistence/V1_DSLPersistence_ServiceParameter.js';
28
+ import type { DSLPersistence_PureProtocolProcessorPlugin_Extension } from '../../../DSLPersistence_PureProtocolProcessorPlugin_Extension.js';
29
+ import {
30
+ type PureProtocolProcessorPlugin,
31
+ V1_deserializeConnectionValue,
32
+ V1_deserializeValueSpecification,
33
+ V1_serializeConnectionValue,
34
+ V1_serializeValueSpecification,
35
+ } from '@finos/legend-graph';
36
+ import {
37
+ deserializeArray,
38
+ type PlainObject,
39
+ serializeArray,
40
+ UnsupportedOperationError,
41
+ usingConstantValueSchema,
42
+ } from '@finos/legend-shared';
43
+ import {
44
+ createModelSchema,
45
+ custom,
46
+ deserialize,
47
+ type ModelSchema,
48
+ primitive,
49
+ serialize,
50
+ SKIP,
51
+ } from 'serializr';
52
+
53
+ /**********
54
+ * persistence platfrom
55
+ **********/
56
+
57
+ enum V1_PersistencePlatformType {
58
+ DEFAULT = 'default',
59
+ }
60
+
61
+ const V1_defaultPersistencePlatformModelSchema = createModelSchema(
62
+ V1_DefaultPersistencePlatform,
63
+ {
64
+ _type: usingConstantValueSchema(V1_PersistencePlatformType.DEFAULT),
65
+ },
66
+ );
67
+
68
+ export const V1_serializePersistencePlatform = (
69
+ protocol: V1_PersistencePlatform,
70
+ plugins: PureProtocolProcessorPlugin[],
71
+ ): PlainObject<V1_PersistencePlatform> => {
72
+ if (protocol instanceof V1_DefaultPersistencePlatform) {
73
+ return serialize(V1_defaultPersistencePlatformModelSchema, protocol);
74
+ }
75
+ const extraPersistencePlatformProtocolSerializers = plugins.flatMap(
76
+ (plugin) =>
77
+ (
78
+ plugin as DSLPersistence_PureProtocolProcessorPlugin_Extension
79
+ ).V1_getExtraPersistencePlatformProtocolSerializers?.() ?? [],
80
+ );
81
+ for (const serializer of extraPersistencePlatformProtocolSerializers) {
82
+ const persistencePlatformProtocolJson = serializer(protocol);
83
+ if (persistencePlatformProtocolJson) {
84
+ return persistencePlatformProtocolJson;
85
+ }
86
+ }
87
+ throw new UnsupportedOperationError(
88
+ `Can't serialize persistence platform: no compatible serializer available from plugins`,
89
+ protocol,
90
+ );
91
+ };
92
+
93
+ export const V1_deserializePersistencePlatform = (
94
+ json: PlainObject<V1_PersistencePlatform>,
95
+ plugins: PureProtocolProcessorPlugin[],
96
+ ): V1_PersistencePlatform => {
97
+ switch (json._type) {
98
+ case V1_PersistencePlatformType.DEFAULT:
99
+ return deserialize(V1_defaultPersistencePlatformModelSchema, json);
100
+ default: {
101
+ const extraPersistencePlatformProtocolDeserializers = plugins.flatMap(
102
+ (plugin) =>
103
+ (
104
+ plugin as DSLPersistence_PureProtocolProcessorPlugin_Extension
105
+ ).V1_getExtraPersistencePlatformProtocolDeserializers?.() ?? [],
106
+ );
107
+ for (const deserializer of extraPersistencePlatformProtocolDeserializers) {
108
+ const persistencePlatformProtocol = deserializer(json);
109
+ if (persistencePlatformProtocol) {
110
+ return persistencePlatformProtocol;
111
+ }
112
+ }
113
+ throw new UnsupportedOperationError(
114
+ `Can't deserialize persistence platform of type '${json._type}': no compatible deserializer available from plugins`,
115
+ );
116
+ }
117
+ }
118
+ };
119
+
120
+ /**********
121
+ * service parameters
122
+ **********/
123
+
124
+ enum V1_ServiceParameterValueType {
125
+ PRIMITIVE_TYPE_VALUE = 'primitiveTypeValue',
126
+ CONNECTION_VALUE = 'connectionValue',
127
+ }
128
+
129
+ const V1_primitiveTypeValueModelSchema = createModelSchema(
130
+ V1_PrimitiveTypeValue,
131
+ {
132
+ _type: usingConstantValueSchema(
133
+ V1_ServiceParameterValueType.PRIMITIVE_TYPE_VALUE,
134
+ ),
135
+ primitiveType: custom(
136
+ (val) => V1_serializeValueSpecification(val),
137
+ (val) => V1_deserializeValueSpecification(val),
138
+ ),
139
+ },
140
+ );
141
+
142
+ const V1_connectionValueModelSchema = (
143
+ plugins: PureProtocolProcessorPlugin[],
144
+ ): ModelSchema<V1_ConnectionValue> =>
145
+ createModelSchema(V1_ConnectionValue, {
146
+ _type: usingConstantValueSchema(
147
+ V1_ServiceParameterValueType.CONNECTION_VALUE,
148
+ ),
149
+ connection: custom(
150
+ (val) => (val ? V1_serializeConnectionValue(val, true, plugins) : SKIP),
151
+ (val) => V1_deserializeConnectionValue(val, true, plugins),
152
+ ),
153
+ });
154
+
155
+ export const V1_serializeServiceParameterValue = (
156
+ protocol: V1_ServiceParameterValue,
157
+ plugins: PureProtocolProcessorPlugin[],
158
+ ): PlainObject<V1_ServiceParameterValue> => {
159
+ if (protocol instanceof V1_PrimitiveTypeValue) {
160
+ return serialize(V1_primitiveTypeValueModelSchema, protocol);
161
+ } else if (protocol instanceof V1_ConnectionValue) {
162
+ return serialize(V1_connectionValueModelSchema(plugins), protocol);
163
+ }
164
+ throw new UnsupportedOperationError(
165
+ `Can't serialize service parameter value`,
166
+ protocol,
167
+ );
168
+ };
169
+
170
+ export const V1_deserializeServiceParameterValue = (
171
+ json: PlainObject<V1_ServiceParameterValue>,
172
+ plugins: PureProtocolProcessorPlugin[],
173
+ ): V1_ServiceParameterValue => {
174
+ switch (json._type) {
175
+ case V1_ServiceParameterValueType.PRIMITIVE_TYPE_VALUE:
176
+ return deserialize(V1_primitiveTypeValueModelSchema, json);
177
+ case V1_ServiceParameterValueType.CONNECTION_VALUE:
178
+ return deserialize(V1_connectionValueModelSchema(plugins), json);
179
+ default:
180
+ throw new UnsupportedOperationError(
181
+ `Can't deserialize service parameter value '${json._type}'`,
182
+ );
183
+ }
184
+ };
185
+
186
+ const V1_serviceParameterModelSchema = (
187
+ plugins: PureProtocolProcessorPlugin[],
188
+ ): ModelSchema<V1_ServiceParameter> =>
189
+ createModelSchema(V1_ServiceParameter, {
190
+ name: primitive(),
191
+ value: custom(
192
+ (val) => V1_serializeServiceParameterValue(val, plugins),
193
+ (val) => V1_deserializeServiceParameterValue(val, plugins),
194
+ ),
195
+ });
196
+
197
+ /**********
198
+ * persistence context
199
+ **********/
200
+
201
+ export const V1_PERSISTENCE_CONTEXT_ELEMENT_PROTOCOL_TYPE =
202
+ 'persistenceContext';
203
+
204
+ export const V1_persistenceContextModelSchema = (
205
+ plugins: PureProtocolProcessorPlugin[],
206
+ ): ModelSchema<V1_PersistenceContext> =>
207
+ createModelSchema(V1_PersistenceContext, {
208
+ _type: usingConstantValueSchema(
209
+ V1_PERSISTENCE_CONTEXT_ELEMENT_PROTOCOL_TYPE,
210
+ ),
211
+ name: primitive(),
212
+ package: primitive(),
213
+ persistence: primitive(),
214
+ platform: custom(
215
+ (val) => V1_serializePersistencePlatform(val, plugins),
216
+ (val) => V1_deserializePersistencePlatform(val, plugins),
217
+ ),
218
+ serviceParameters: custom(
219
+ (val) =>
220
+ serializeArray(
221
+ val,
222
+ (v: V1_ServiceParameter) =>
223
+ serialize(V1_serviceParameterModelSchema(plugins), v),
224
+ {
225
+ skipIfEmpty: true,
226
+ INTERNAL__forceReturnEmptyInTest: true,
227
+ },
228
+ ),
229
+ (val) =>
230
+ deserializeArray(
231
+ val,
232
+ (v) => deserialize(V1_serviceParameterModelSchema(plugins), v),
233
+ {
234
+ skipIfEmpty: false,
235
+ },
236
+ ),
237
+ ),
238
+ sinkConnection: custom(
239
+ (val) => (val ? V1_serializeConnectionValue(val, true, plugins) : SKIP),
240
+ (val) => V1_deserializeConnectionValue(val, true, plugins),
241
+ ),
242
+ });
@@ -15,29 +15,6 @@
15
15
  */
16
16
 
17
17
  import { V1_Persistence } from '../../model/packageableElements/persistence/V1_DSLPersistence_Persistence.js';
18
- import {
19
- type PureProtocolProcessorPlugin,
20
- V1_deserializeConnectionValue,
21
- V1_serializeConnectionValue,
22
- } from '@finos/legend-graph';
23
- import {
24
- deserializeArray,
25
- type PlainObject,
26
- serializeArray,
27
- UnsupportedOperationError,
28
- usingConstantValueSchema,
29
- } from '@finos/legend-shared';
30
- import {
31
- createModelSchema,
32
- custom,
33
- deserialize,
34
- list,
35
- type ModelSchema,
36
- optional,
37
- primitive,
38
- serialize,
39
- SKIP,
40
- } from 'serializr';
41
18
  import {
42
19
  V1_CronTrigger,
43
20
  V1_ManualTrigger,
@@ -106,6 +83,25 @@ import {
106
83
  type V1_Persister,
107
84
  V1_StreamingPersister,
108
85
  } from '../../model/packageableElements/persistence/V1_DSLPersistence_Persister.js';
86
+ import type { PureProtocolProcessorPlugin } from '@finos/legend-graph';
87
+ import {
88
+ deserializeArray,
89
+ type PlainObject,
90
+ serializeArray,
91
+ UnsupportedOperationError,
92
+ usingConstantValueSchema,
93
+ } from '@finos/legend-shared';
94
+ import {
95
+ createModelSchema,
96
+ custom,
97
+ deserialize,
98
+ list,
99
+ type ModelSchema,
100
+ optional,
101
+ primitive,
102
+ serialize,
103
+ SKIP,
104
+ } from 'serializr';
109
105
 
110
106
  /**********
111
107
  * notifier
@@ -695,10 +691,7 @@ const V1_relationalSinkModelSchema = (
695
691
  ): ModelSchema<V1_RelationalSink> =>
696
692
  createModelSchema(V1_RelationalSink, {
697
693
  _type: usingConstantValueSchema(V1_SinkType.RELATIONAL_SINK),
698
- connection: custom(
699
- (val) => (val ? V1_serializeConnectionValue(val, true, plugins) : SKIP),
700
- (val) => V1_deserializeConnectionValue(val, true, plugins),
701
- ),
694
+ database: optional(primitive()),
702
695
  });
703
696
 
704
697
  const V1_objectStorageSinkModelSchema = (
@@ -707,10 +700,6 @@ const V1_objectStorageSinkModelSchema = (
707
700
  createModelSchema(V1_ObjectStorageSink, {
708
701
  _type: usingConstantValueSchema(V1_SinkType.OBJECT_STORAGE_SINK),
709
702
  binding: optional(primitive()),
710
- connection: custom(
711
- (val) => V1_serializeConnectionValue(val, true, plugins),
712
- (val) => V1_deserializeConnectionValue(val, true, plugins),
713
- ),
714
703
  });
715
704
 
716
705
  export const V1_serializeSink = (
package/tsconfig.json CHANGED
@@ -40,6 +40,7 @@
40
40
  "./src/graph/DSLPersistence_PureGraphPlugin.ts",
41
41
  "./src/graphManager/DSLPersistence_GraphManagerHelper.ts",
42
42
  "./src/graphManager/DSLPersistence_PureGraphManagerPlugin.ts",
43
+ "./src/graphManager/action/changeDetection/DSLPersistenceContext_ObserverHelper.ts",
43
44
  "./src/graphManager/action/changeDetection/DSLPersistence_ObserverHelper.ts",
44
45
  "./src/models/DSLPersistence_ModelUtils.ts",
45
46
  "./src/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_Auditing.ts",
@@ -49,11 +50,15 @@
49
50
  "./src/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_Milestoning.ts",
50
51
  "./src/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_Notifier.ts",
51
52
  "./src/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_Persistence.ts",
53
+ "./src/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistenceContext.ts",
54
+ "./src/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_PersistencePlatform.ts",
52
55
  "./src/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_Persister.ts",
56
+ "./src/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_ServiceParameter.ts",
53
57
  "./src/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_Sink.ts",
54
58
  "./src/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_TargetShape.ts",
55
59
  "./src/models/metamodels/pure/model/packageableElements/persistence/DSLPersistence_Trigger.ts",
56
60
  "./src/models/protocols/pure/DSLPersistence_PureProtocolProcessorPlugin.ts",
61
+ "./src/models/protocols/pure/DSLPersistence_PureProtocolProcessorPlugin_Extension.ts",
57
62
  "./src/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_Auditing.ts",
58
63
  "./src/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_DeduplicationStrategy.ts",
59
64
  "./src/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_IngestMode.ts",
@@ -61,15 +66,21 @@
61
66
  "./src/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_Milestoning.ts",
62
67
  "./src/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_Notifier.ts",
63
68
  "./src/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_Persistence.ts",
69
+ "./src/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_PersistenceContext.ts",
70
+ "./src/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_PersistencePlatform.ts",
64
71
  "./src/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_Persister.ts",
72
+ "./src/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_ServiceParameter.ts",
65
73
  "./src/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_Sink.ts",
66
74
  "./src/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_TargetShape.ts",
67
75
  "./src/models/protocols/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_Trigger.ts",
68
76
  "./src/models/protocols/pure/v1/transformation/pureGraph/V1_DSLPersistence_GraphBuilderHelper.ts",
77
+ "./src/models/protocols/pure/v1/transformation/pureGraph/from/V1_PersistenceContextTransformer.ts",
69
78
  "./src/models/protocols/pure/v1/transformation/pureGraph/from/V1_PersistenceTransformer.ts",
70
79
  "./src/models/protocols/pure/v1/transformation/pureGraph/to/V1_PersistenceBuilder.ts",
80
+ "./src/models/protocols/pure/v1/transformation/pureGraph/to/V1_PersistenceContextBuilder.ts",
81
+ "./src/models/protocols/pure/v1/transformation/pureProtocol/V1_DSLPersistenceContext_ProtocolHelper.ts",
71
82
  "./src/models/protocols/pure/v1/transformation/pureProtocol/V1_DSLPersistence_ProtocolHelper.ts",
72
- "./src/components/studio/DSLPersistence_LegendStudioPlugin.tsx"
83
+ "./src/components/studio/DSLPersistence_LegendStudioApplicationPlugin.tsx"
73
84
  ],
74
85
  "include": [
75
86
  "src/**/*.ts",
@@ -1 +0,0 @@
1
- {"version":3,"file":"DSLPersistence_LegendStudioPlugin.d.ts","sourceRoot":"","sources":["../../../src/components/studio/DSLPersistence_LegendStudioPlugin.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,EACL,kBAAkB,EAElB,KAAK,gCAAgC,EAGrC,KAAK,yBAAyB,EAC9B,KAAK,iBAAiB,EACtB,KAAK,mCAAmC,EACxC,KAAK,iBAAiB,EACtB,KAAK,0BAA0B,EAE/B,KAAK,gDAAgD,EACrD,KAAK,wCAAwC,EAE7C,KAAK,2CAA2C,EAChD,KAAK,oCAAoC,EAC1C,MAAM,sBAAsB,CAAC;AAc9B,qBAAa,iCACX,SAAQ,kBACR,YAAW,gCAAgC;;IAMlC,iCAAiC,IAAI,MAAM,EAAE;IAOtD,6BAA6B,IAAI,MAAM,EAAE;IAIzC,0BAA0B,IAAI,iBAAiB,EAAE;IAWjD,0BAA0B,IAAI,iBAAiB,EAAE;IAejD,mCAAmC,IAAI,0BAA0B,EAAE;IAenE,kCAAkC,IAAI,yBAAyB,EAAE;IAcjE,4CAA4C,IAAI,mCAAmC,EAAE;IAWrF,iCAAiC,IAAI,MAAM,EAAE;IAI7C,oDAAoD,IAAI,2CAA2C,EAAE;IAmBrG,6CAA6C,IAAI,oCAAoC,EAAE;IAgBvF,iDAAiD,IAAI,wCAAwC,EAAE;IAgB/F,yDAAyD,IAAI,gDAAgD,EAAE;CAiBhH"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"DSLPersistence_LegendStudioPlugin.js","sourceRoot":"","sources":["../../../src/components/studio/DSLPersistence_LegendStudioPlugin.tsx"],"names":[],"mappings":"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"}