@finos/legend-extension-dsl-persistence 3.0.0 → 3.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/graph/metamodel/pure/model/packageableElements/persistence/DSLPersistence_Sink.d.ts +2 -4
- package/lib/graph/metamodel/pure/model/packageableElements/persistence/DSLPersistence_Sink.d.ts.map +1 -1
- package/lib/graph/metamodel/pure/model/packageableElements/persistence/DSLPersistence_Sink.js +1 -8
- package/lib/graph/metamodel/pure/model/packageableElements/persistence/DSLPersistence_Sink.js.map +1 -1
- package/lib/graphManager/protocol/pure/DSLPersistence_PureProtocolProcessorPlugin.d.ts +6 -1
- package/lib/graphManager/protocol/pure/DSLPersistence_PureProtocolProcessorPlugin.d.ts.map +1 -1
- package/lib/graphManager/protocol/pure/DSLPersistence_PureProtocolProcessorPlugin.js +68 -1
- package/lib/graphManager/protocol/pure/DSLPersistence_PureProtocolProcessorPlugin.js.map +1 -1
- package/lib/graphManager/protocol/pure/DSLPersistence_PureProtocolProcessorPlugin_Extension.d.ts +10 -0
- package/lib/graphManager/protocol/pure/DSLPersistence_PureProtocolProcessorPlugin_Extension.d.ts.map +1 -1
- package/lib/graphManager/protocol/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_Sink.d.ts +1 -4
- package/lib/graphManager/protocol/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_Sink.d.ts.map +1 -1
- package/lib/graphManager/protocol/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_Sink.js +1 -8
- package/lib/graphManager/protocol/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_Sink.js.map +1 -1
- package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/from/V1_PersistenceTransformer.d.ts +2 -2
- package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/from/V1_PersistenceTransformer.d.ts.map +1 -1
- package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/from/V1_PersistenceTransformer.js +9 -24
- package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/from/V1_PersistenceTransformer.js.map +1 -1
- package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/to/V1_PersistenceBuilder.d.ts +2 -2
- package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/to/V1_PersistenceBuilder.d.ts.map +1 -1
- package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/to/V1_PersistenceBuilder.js +11 -26
- package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/to/V1_PersistenceBuilder.js.map +1 -1
- package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/to/V1_PersistenceContextBuilder.js +1 -1
- package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/to/V1_PersistenceContextBuilder.js.map +1 -1
- package/lib/graphManager/protocol/pure/v1/transformation/pureProtocol/V1_DSLPersistence_ProtocolHelper.d.ts +12 -3
- package/lib/graphManager/protocol/pure/v1/transformation/pureProtocol/V1_DSLPersistence_ProtocolHelper.d.ts.map +1 -1
- package/lib/graphManager/protocol/pure/v1/transformation/pureProtocol/V1_DSLPersistence_ProtocolHelper.js +24 -23
- package/lib/graphManager/protocol/pure/v1/transformation/pureProtocol/V1_DSLPersistence_ProtocolHelper.js.map +1 -1
- package/lib/index.css +1 -1
- package/lib/index.d.ts +2 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -0
- package/lib/index.js.map +1 -1
- package/lib/package.json +2 -2
- package/package.json +9 -9
- package/src/graph/metamodel/pure/model/packageableElements/persistence/DSLPersistence_Sink.ts +2 -10
- package/src/graphManager/protocol/pure/DSLPersistence_PureProtocolProcessorPlugin.ts +96 -1
- package/src/graphManager/protocol/pure/DSLPersistence_PureProtocolProcessorPlugin_Extension.ts +32 -0
- package/src/graphManager/protocol/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_Sink.ts +2 -10
- package/src/graphManager/protocol/pure/v1/transformation/pureGraph/from/V1_PersistenceTransformer.ts +19 -39
- package/src/graphManager/protocol/pure/v1/transformation/pureGraph/to/V1_PersistenceBuilder.ts +23 -35
- package/src/graphManager/protocol/pure/v1/transformation/pureGraph/to/V1_PersistenceContextBuilder.ts +1 -1
- package/src/graphManager/protocol/pure/v1/transformation/pureProtocol/V1_DSLPersistence_ProtocolHelper.ts +39 -21
- package/src/index.ts +2 -0
package/src/graphManager/protocol/pure/DSLPersistence_PureProtocolProcessorPlugin_Extension.ts
CHANGED
|
@@ -15,7 +15,9 @@
|
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
17
|
import type { V1_PersistencePlatform } from './v1/model/packageableElements/persistence/V1_DSLPersistence_PersistencePlatform.js';
|
|
18
|
+
import type { V1_Trigger } from './v1/model/packageableElements/persistence/V1_DSLPersistence_Trigger.js';
|
|
18
19
|
import type { PersistencePlatform } from '../../../graph/metamodel/pure/model/packageableElements/persistence/DSLPersistence_PersistencePlatform.js';
|
|
20
|
+
import type { Trigger } from '../../../graph/metamodel/pure/model/packageableElements/persistence/DSLPersistence_Trigger.js';
|
|
19
21
|
import type {
|
|
20
22
|
PureProtocolProcessorPlugin,
|
|
21
23
|
V1_GraphBuilderContext,
|
|
@@ -43,6 +45,26 @@ export type V1_PersistencePlatformProtocolDeserializer = (
|
|
|
43
45
|
json: PlainObject<V1_PersistencePlatform>,
|
|
44
46
|
) => V1_PersistencePlatform | undefined;
|
|
45
47
|
|
|
48
|
+
// types: trigger
|
|
49
|
+
|
|
50
|
+
export type V1_TriggerBuilder = (
|
|
51
|
+
protocol: V1_Trigger,
|
|
52
|
+
context: V1_GraphBuilderContext,
|
|
53
|
+
) => Trigger | undefined;
|
|
54
|
+
|
|
55
|
+
export type V1_TriggerTransformer = (
|
|
56
|
+
metamodel: Trigger,
|
|
57
|
+
context: V1_GraphTransformerContext,
|
|
58
|
+
) => V1_Trigger | undefined;
|
|
59
|
+
|
|
60
|
+
export type V1_TriggerProtocolSerializer = (
|
|
61
|
+
protocol: V1_Trigger,
|
|
62
|
+
) => PlainObject<V1_Trigger> | undefined;
|
|
63
|
+
|
|
64
|
+
export type V1_TriggerProtocolDeserializer = (
|
|
65
|
+
json: PlainObject<V1_Trigger>,
|
|
66
|
+
) => V1_Trigger | undefined;
|
|
67
|
+
|
|
46
68
|
export interface DSLPersistence_PureProtocolProcessorPlugin_Extension
|
|
47
69
|
extends PureProtocolProcessorPlugin {
|
|
48
70
|
// extension hooks: persistence platform
|
|
@@ -54,4 +76,14 @@ export interface DSLPersistence_PureProtocolProcessorPlugin_Extension
|
|
|
54
76
|
V1_getExtraPersistencePlatformProtocolSerializers?(): V1_PersistencePlatformProtocolSerializer[];
|
|
55
77
|
|
|
56
78
|
V1_getExtraPersistencePlatformProtocolDeserializers?(): V1_PersistencePlatformProtocolDeserializer[];
|
|
79
|
+
|
|
80
|
+
// extension hooks: trigger
|
|
81
|
+
|
|
82
|
+
V1_getExtraTriggerBuilders?(): V1_TriggerBuilder[];
|
|
83
|
+
|
|
84
|
+
V1_getExtraTriggerTransformers?(): V1_TriggerTransformer[];
|
|
85
|
+
|
|
86
|
+
V1_getExtraTriggerProtocolSerializers?(): V1_TriggerProtocolSerializer[];
|
|
87
|
+
|
|
88
|
+
V1_getExtraTriggerProtocolDeserializers?(): V1_TriggerProtocolDeserializer[];
|
|
57
89
|
}
|
|
@@ -15,7 +15,6 @@
|
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
17
|
import { PERSISTENCE_HASH_STRUCTURE } from '../../../../../../../graph/DSLPersistence_HashUtils.js';
|
|
18
|
-
import type { V1_Connection } from '@finos/legend-graph';
|
|
19
18
|
import { type Hashable, hashArray } from '@finos/legend-shared';
|
|
20
19
|
|
|
21
20
|
export abstract class V1_Sink implements Hashable {
|
|
@@ -23,30 +22,23 @@ export abstract class V1_Sink implements Hashable {
|
|
|
23
22
|
}
|
|
24
23
|
|
|
25
24
|
export class V1_RelationalSink extends V1_Sink implements Hashable {
|
|
26
|
-
|
|
27
|
-
database?: string;
|
|
28
|
-
//TODO: ledav -- remove once persistence changes are rolled out in engine
|
|
29
|
-
connection?: V1_Connection;
|
|
25
|
+
database!: string;
|
|
30
26
|
|
|
31
27
|
override get hashCode(): string {
|
|
32
28
|
return hashArray([
|
|
33
29
|
PERSISTENCE_HASH_STRUCTURE.RELATIONAL_SINK,
|
|
34
|
-
this.database
|
|
35
|
-
this.connection ?? '',
|
|
30
|
+
this.database,
|
|
36
31
|
]);
|
|
37
32
|
}
|
|
38
33
|
}
|
|
39
34
|
|
|
40
35
|
export class V1_ObjectStorageSink extends V1_Sink implements Hashable {
|
|
41
36
|
binding!: string;
|
|
42
|
-
//TODO: ledav -- remove once persistence changes are rolled out in engine
|
|
43
|
-
connection?: V1_Connection;
|
|
44
37
|
|
|
45
38
|
override get hashCode(): string {
|
|
46
39
|
return hashArray([
|
|
47
40
|
PERSISTENCE_HASH_STRUCTURE.OBJECT_STORAGE_SINK,
|
|
48
41
|
this.binding,
|
|
49
|
-
this.connection ?? '',
|
|
50
42
|
]);
|
|
51
43
|
}
|
|
52
44
|
}
|
package/src/graphManager/protocol/pure/v1/transformation/pureGraph/from/V1_PersistenceTransformer.ts
CHANGED
|
@@ -79,11 +79,7 @@ import {
|
|
|
79
79
|
type TargetShape,
|
|
80
80
|
TransactionScope,
|
|
81
81
|
} from '../../../../../../../graph/metamodel/pure/model/packageableElements/persistence/DSLPersistence_TargetShape.js';
|
|
82
|
-
import {
|
|
83
|
-
CronTrigger,
|
|
84
|
-
ManualTrigger,
|
|
85
|
-
type Trigger,
|
|
86
|
-
} from '../../../../../../../graph/metamodel/pure/model/packageableElements/persistence/DSLPersistence_Trigger.js';
|
|
82
|
+
import type { Trigger } from '../../../../../../../graph/metamodel/pure/model/packageableElements/persistence/DSLPersistence_Trigger.js';
|
|
87
83
|
import {
|
|
88
84
|
type V1_Auditing,
|
|
89
85
|
V1_DateTimeAuditing,
|
|
@@ -149,15 +145,11 @@ import {
|
|
|
149
145
|
type V1_TargetShape,
|
|
150
146
|
V1_TransactionScope,
|
|
151
147
|
} from '../../../model/packageableElements/persistence/V1_DSLPersistence_TargetShape.js';
|
|
152
|
-
import {
|
|
153
|
-
|
|
154
|
-
V1_ManualTrigger,
|
|
155
|
-
type V1_Trigger,
|
|
156
|
-
} from '../../../model/packageableElements/persistence/V1_DSLPersistence_Trigger.js';
|
|
148
|
+
import type { V1_Trigger } from '../../../model/packageableElements/persistence/V1_DSLPersistence_Trigger.js';
|
|
149
|
+
import type { DSLPersistence_PureProtocolProcessorPlugin_Extension } from '../../../../DSLPersistence_PureProtocolProcessorPlugin_Extension.js';
|
|
157
150
|
import {
|
|
158
151
|
type V1_GraphTransformerContext,
|
|
159
152
|
V1_initPackageableElement,
|
|
160
|
-
V1_transformConnection,
|
|
161
153
|
} from '@finos/legend-graph';
|
|
162
154
|
import { UnsupportedOperationError } from '@finos/legend-shared';
|
|
163
155
|
|
|
@@ -169,18 +161,22 @@ export const V1_transformTrigger = (
|
|
|
169
161
|
element: Trigger,
|
|
170
162
|
context: V1_GraphTransformerContext,
|
|
171
163
|
): V1_Trigger => {
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
164
|
+
const extraTriggerTransformers = context.plugins.flatMap(
|
|
165
|
+
(plugin) =>
|
|
166
|
+
(
|
|
167
|
+
plugin as DSLPersistence_PureProtocolProcessorPlugin_Extension
|
|
168
|
+
).V1_getExtraTriggerTransformers?.() ?? [],
|
|
169
|
+
);
|
|
170
|
+
for (const transformer of extraTriggerTransformers) {
|
|
171
|
+
const protocol = transformer(element, context);
|
|
172
|
+
if (protocol) {
|
|
173
|
+
return protocol;
|
|
174
|
+
}
|
|
182
175
|
}
|
|
183
|
-
throw new UnsupportedOperationError(
|
|
176
|
+
throw new UnsupportedOperationError(
|
|
177
|
+
`Can't transform trigger: no compatible transformer available from plugins`,
|
|
178
|
+
element,
|
|
179
|
+
);
|
|
184
180
|
};
|
|
185
181
|
|
|
186
182
|
/**********
|
|
@@ -192,16 +188,7 @@ export const V1_transformRelationalSink = (
|
|
|
192
188
|
context: V1_GraphTransformerContext,
|
|
193
189
|
): V1_RelationalSink => {
|
|
194
190
|
const protocol = new V1_RelationalSink();
|
|
195
|
-
|
|
196
|
-
protocol.database = element.database.value.path;
|
|
197
|
-
}
|
|
198
|
-
if (element.connection) {
|
|
199
|
-
protocol.connection = V1_transformConnection(
|
|
200
|
-
element.connection,
|
|
201
|
-
true,
|
|
202
|
-
context,
|
|
203
|
-
);
|
|
204
|
-
}
|
|
191
|
+
protocol.database = element.database.value.path;
|
|
205
192
|
return protocol;
|
|
206
193
|
};
|
|
207
194
|
|
|
@@ -211,13 +198,6 @@ export const V1_transformObjectStorageSink = (
|
|
|
211
198
|
): V1_ObjectStorageSink => {
|
|
212
199
|
const protocol = new V1_ObjectStorageSink();
|
|
213
200
|
protocol.binding = element.binding.value.path;
|
|
214
|
-
if (element.connection) {
|
|
215
|
-
protocol.connection = V1_transformConnection(
|
|
216
|
-
element.connection,
|
|
217
|
-
true,
|
|
218
|
-
context,
|
|
219
|
-
);
|
|
220
|
-
}
|
|
221
201
|
return protocol;
|
|
222
202
|
};
|
|
223
203
|
|
package/src/graphManager/protocol/pure/v1/transformation/pureGraph/to/V1_PersistenceBuilder.ts
CHANGED
|
@@ -79,11 +79,7 @@ import {
|
|
|
79
79
|
type V1_TargetShape,
|
|
80
80
|
V1_TransactionScope,
|
|
81
81
|
} from '../../../model/packageableElements/persistence/V1_DSLPersistence_TargetShape.js';
|
|
82
|
-
import {
|
|
83
|
-
V1_CronTrigger,
|
|
84
|
-
V1_ManualTrigger,
|
|
85
|
-
type V1_Trigger,
|
|
86
|
-
} from '../../../model/packageableElements/persistence/V1_DSLPersistence_Trigger.js';
|
|
82
|
+
import type { V1_Trigger } from '../../../model/packageableElements/persistence/V1_DSLPersistence_Trigger.js';
|
|
87
83
|
import {
|
|
88
84
|
type Auditing,
|
|
89
85
|
DateTimeAuditing,
|
|
@@ -148,19 +144,15 @@ import {
|
|
|
148
144
|
type TargetShape,
|
|
149
145
|
TransactionScope,
|
|
150
146
|
} from '../../../../../../../graph/metamodel/pure/model/packageableElements/persistence/DSLPersistence_TargetShape.js';
|
|
151
|
-
import {
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
type Trigger,
|
|
155
|
-
} from '../../../../../../../graph/metamodel/pure/model/packageableElements/persistence/DSLPersistence_Trigger.js';
|
|
156
|
-
import { getOwnPersistence } from '../../../../../../../graphManager/DSLPersistence_GraphManagerHelper.js';
|
|
147
|
+
import type { Trigger } from '../../../../../../../graph/metamodel/pure/model/packageableElements/persistence/DSLPersistence_Trigger.js';
|
|
148
|
+
import { getOwnPersistence } from '../../../../../../DSLPersistence_GraphManagerHelper.js';
|
|
149
|
+
import type { DSLPersistence_PureProtocolProcessorPlugin_Extension } from '../../../../DSLPersistence_PureProtocolProcessorPlugin_Extension.js';
|
|
157
150
|
import {
|
|
158
151
|
type Binding,
|
|
159
152
|
type Database,
|
|
160
153
|
type PackageableElementImplicitReference,
|
|
161
154
|
type V1_GraphBuilderContext,
|
|
162
155
|
V1_buildFullPath,
|
|
163
|
-
V1_buildConnection,
|
|
164
156
|
} from '@finos/legend-graph';
|
|
165
157
|
import {
|
|
166
158
|
guaranteeNonEmptyString,
|
|
@@ -175,18 +167,22 @@ export const V1_buildTrigger = (
|
|
|
175
167
|
protocol: V1_Trigger,
|
|
176
168
|
context: V1_GraphBuilderContext,
|
|
177
169
|
): Trigger => {
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
170
|
+
const extraTriggerBuilders = context.extensions.plugins.flatMap(
|
|
171
|
+
(plugin) =>
|
|
172
|
+
(
|
|
173
|
+
plugin as DSLPersistence_PureProtocolProcessorPlugin_Extension
|
|
174
|
+
).V1_getExtraTriggerBuilders?.() ?? [],
|
|
175
|
+
);
|
|
176
|
+
for (const builder of extraTriggerBuilders) {
|
|
177
|
+
const metamodel = builder(protocol, context);
|
|
178
|
+
if (metamodel) {
|
|
179
|
+
return metamodel;
|
|
180
|
+
}
|
|
188
181
|
}
|
|
189
|
-
throw new UnsupportedOperationError(
|
|
182
|
+
throw new UnsupportedOperationError(
|
|
183
|
+
`Can't build trigger: no compatible builder available from plugins`,
|
|
184
|
+
protocol,
|
|
185
|
+
);
|
|
190
186
|
};
|
|
191
187
|
|
|
192
188
|
/**********
|
|
@@ -198,15 +194,10 @@ export const V1_buildRelationalSink = (
|
|
|
198
194
|
context: V1_GraphBuilderContext,
|
|
199
195
|
): RelationalSink => {
|
|
200
196
|
const sink = new RelationalSink();
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
) as PackageableElementImplicitReference<Database>;
|
|
206
|
-
}
|
|
207
|
-
if (protocol.connection) {
|
|
208
|
-
sink.connection = V1_buildConnection(protocol.connection, context);
|
|
209
|
-
}
|
|
197
|
+
sink.database = context.resolveElement(
|
|
198
|
+
protocol.database,
|
|
199
|
+
false,
|
|
200
|
+
) as PackageableElementImplicitReference<Database>;
|
|
210
201
|
return sink;
|
|
211
202
|
};
|
|
212
203
|
|
|
@@ -219,9 +210,6 @@ export const V1_buildObjectStorageSink = (
|
|
|
219
210
|
protocol.binding,
|
|
220
211
|
false,
|
|
221
212
|
) as PackageableElementImplicitReference<Binding>;
|
|
222
|
-
if (protocol.connection) {
|
|
223
|
-
sink.connection = V1_buildConnection(protocol.connection, context);
|
|
224
|
-
}
|
|
225
213
|
return sink;
|
|
226
214
|
};
|
|
227
215
|
|
|
@@ -36,7 +36,7 @@ import {
|
|
|
36
36
|
ServiceParameter,
|
|
37
37
|
type ServiceParameterValue,
|
|
38
38
|
} from '../../../../../../../graph/metamodel/pure/model/packageableElements/persistence/DSLPersistence_ServiceParameter.js';
|
|
39
|
-
import { getOwnPersistenceContext } from '
|
|
39
|
+
import { getOwnPersistenceContext } from '../../../../../../DSLPersistence_GraphManagerHelper.js';
|
|
40
40
|
import type { DSLPersistence_PureProtocolProcessorPlugin_Extension } from '../../../../DSLPersistence_PureProtocolProcessorPlugin_Extension.js';
|
|
41
41
|
import {
|
|
42
42
|
type PackageableElementImplicitReference,
|
|
@@ -83,6 +83,7 @@ import {
|
|
|
83
83
|
type V1_Persister,
|
|
84
84
|
V1_StreamingPersister,
|
|
85
85
|
} from '../../model/packageableElements/persistence/V1_DSLPersistence_Persister.js';
|
|
86
|
+
import type { DSLPersistence_PureProtocolProcessorPlugin_Extension } from '../../../DSLPersistence_PureProtocolProcessorPlugin_Extension.js';
|
|
86
87
|
import type { PureProtocolProcessorPlugin } from '@finos/legend-graph';
|
|
87
88
|
import {
|
|
88
89
|
deserializeArray,
|
|
@@ -691,7 +692,7 @@ const V1_relationalSinkModelSchema = (
|
|
|
691
692
|
): ModelSchema<V1_RelationalSink> =>
|
|
692
693
|
createModelSchema(V1_RelationalSink, {
|
|
693
694
|
_type: usingConstantValueSchema(V1_SinkType.RELATIONAL_SINK),
|
|
694
|
-
database:
|
|
695
|
+
database: primitive(),
|
|
695
696
|
});
|
|
696
697
|
|
|
697
698
|
const V1_objectStorageSinkModelSchema = (
|
|
@@ -699,7 +700,7 @@ const V1_objectStorageSinkModelSchema = (
|
|
|
699
700
|
): ModelSchema<V1_ObjectStorageSink> =>
|
|
700
701
|
createModelSchema(V1_ObjectStorageSink, {
|
|
701
702
|
_type: usingConstantValueSchema(V1_SinkType.OBJECT_STORAGE_SINK),
|
|
702
|
-
binding:
|
|
703
|
+
binding: primitive(),
|
|
703
704
|
});
|
|
704
705
|
|
|
705
706
|
export const V1_serializeSink = (
|
|
@@ -970,16 +971,16 @@ export const V1_deserializePersister = (
|
|
|
970
971
|
* trigger
|
|
971
972
|
**********/
|
|
972
973
|
|
|
973
|
-
enum V1_TriggerType {
|
|
974
|
+
export enum V1_TriggerType {
|
|
974
975
|
MANUAL_TRIGGER = 'manualTrigger',
|
|
975
976
|
CRON_TRIGGER = 'cronTrigger',
|
|
976
977
|
}
|
|
977
978
|
|
|
978
|
-
const V1_manualTriggerModelSchema = createModelSchema(V1_ManualTrigger, {
|
|
979
|
+
export const V1_manualTriggerModelSchema = createModelSchema(V1_ManualTrigger, {
|
|
979
980
|
_type: usingConstantValueSchema(V1_TriggerType.MANUAL_TRIGGER),
|
|
980
981
|
});
|
|
981
982
|
|
|
982
|
-
const V1_cronTriggerModelSchema = createModelSchema(V1_CronTrigger, {
|
|
983
|
+
export const V1_cronTriggerModelSchema = createModelSchema(V1_CronTrigger, {
|
|
983
984
|
_type: usingConstantValueSchema(V1_TriggerType.CRON_TRIGGER),
|
|
984
985
|
minutes: primitive(),
|
|
985
986
|
hours: primitive(),
|
|
@@ -990,28 +991,45 @@ const V1_cronTriggerModelSchema = createModelSchema(V1_CronTrigger, {
|
|
|
990
991
|
|
|
991
992
|
export const V1_serializeTrigger = (
|
|
992
993
|
protocol: V1_Trigger,
|
|
994
|
+
plugins: PureProtocolProcessorPlugin[],
|
|
993
995
|
): PlainObject<V1_Trigger> => {
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
996
|
+
const extraTriggerProtocolSerializers = plugins.flatMap(
|
|
997
|
+
(plugin) =>
|
|
998
|
+
(
|
|
999
|
+
plugin as DSLPersistence_PureProtocolProcessorPlugin_Extension
|
|
1000
|
+
).V1_getExtraTriggerProtocolSerializers?.() ?? [],
|
|
1001
|
+
);
|
|
1002
|
+
for (const serializer of extraTriggerProtocolSerializers) {
|
|
1003
|
+
const triggerProtocolJson = serializer(protocol);
|
|
1004
|
+
if (triggerProtocolJson) {
|
|
1005
|
+
return triggerProtocolJson;
|
|
1006
|
+
}
|
|
998
1007
|
}
|
|
999
|
-
throw new UnsupportedOperationError(
|
|
1008
|
+
throw new UnsupportedOperationError(
|
|
1009
|
+
`Can't serialize trigger: no compatible serializer available from plugins`,
|
|
1010
|
+
protocol,
|
|
1011
|
+
);
|
|
1000
1012
|
};
|
|
1001
1013
|
|
|
1002
1014
|
export const V1_deserializeTrigger = (
|
|
1003
1015
|
json: PlainObject<V1_Trigger>,
|
|
1016
|
+
plugins: PureProtocolProcessorPlugin[],
|
|
1004
1017
|
): V1_Trigger => {
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1018
|
+
const extraTriggerProtocolDeserializers = plugins.flatMap(
|
|
1019
|
+
(plugin) =>
|
|
1020
|
+
(
|
|
1021
|
+
plugin as DSLPersistence_PureProtocolProcessorPlugin_Extension
|
|
1022
|
+
).V1_getExtraTriggerProtocolDeserializers?.() ?? [],
|
|
1023
|
+
);
|
|
1024
|
+
for (const deserializer of extraTriggerProtocolDeserializers) {
|
|
1025
|
+
const triggerProtocol = deserializer(json);
|
|
1026
|
+
if (triggerProtocol) {
|
|
1027
|
+
return triggerProtocol;
|
|
1028
|
+
}
|
|
1014
1029
|
}
|
|
1030
|
+
throw new UnsupportedOperationError(
|
|
1031
|
+
`Can't deserialize trigger of type '${json._type}': no compatible deserializer available from plugins`,
|
|
1032
|
+
);
|
|
1015
1033
|
};
|
|
1016
1034
|
|
|
1017
1035
|
/**********
|
|
@@ -1038,7 +1056,7 @@ export const V1_persistenceModelSchema = (
|
|
|
1038
1056
|
),
|
|
1039
1057
|
service: primitive(),
|
|
1040
1058
|
trigger: custom(
|
|
1041
|
-
(val) => V1_serializeTrigger(val),
|
|
1042
|
-
(val) => V1_deserializeTrigger(val),
|
|
1059
|
+
(val) => V1_serializeTrigger(val, plugins),
|
|
1060
|
+
(val) => V1_deserializeTrigger(val, plugins),
|
|
1043
1061
|
),
|
|
1044
1062
|
});
|
package/src/index.ts
CHANGED
|
@@ -23,11 +23,13 @@ export { DSLPersistence_LegendStudioApplicationPlugin } from './components/studi
|
|
|
23
23
|
export { Persistence } from './graph/metamodel/pure/model/packageableElements/persistence/DSLPersistence_Persistence.js';
|
|
24
24
|
export { PersistenceContext } from './graph/metamodel/pure/model/packageableElements/persistence/DSLPersistence_PersistenceContext.js';
|
|
25
25
|
export { PersistencePlatform } from './graph/metamodel/pure/model/packageableElements/persistence/DSLPersistence_PersistencePlatform.js';
|
|
26
|
+
export { Trigger } from './graph/metamodel/pure/model/packageableElements/persistence/DSLPersistence_Trigger.js';
|
|
26
27
|
|
|
27
28
|
// v1 protocols
|
|
28
29
|
export { V1_Persistence } from './graphManager/protocol/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_Persistence.js';
|
|
29
30
|
export { V1_PersistenceContext } from './graphManager/protocol/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_PersistenceContext.js';
|
|
30
31
|
export { V1_PersistencePlatform } from './graphManager/protocol/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_PersistencePlatform.js';
|
|
32
|
+
export { V1_Trigger } from './graphManager/protocol/pure/v1/model/packageableElements/persistence/V1_DSLPersistence_Trigger.js';
|
|
31
33
|
|
|
32
34
|
// ---------- TRANSFORMATION ----------
|
|
33
35
|
|