@@ -2,7 +2,14 @@ import { Connection, getConnectedEdges, getIncomers, Node, NodeAddChange, XYPosi
22
33import i18n from '@/config/i18n.config.ts'
44
5- import { BehaviorPolicy , DataPolicy , PolicyOperation , Schema , SchemaReference , Script } from '@/api/__generated__'
5+ import {
6+ BehaviorPolicyOnTransition ,
7+ DataPolicy ,
8+ PolicyOperation ,
9+ Schema ,
10+ SchemaReference ,
11+ Script ,
12+ } from '@/api/__generated__'
613import {
714 DataHubNodeType ,
815 DataPolicyData ,
@@ -12,7 +19,6 @@ import {
1219 PolicyOperationArguments ,
1320 ResourceStatus ,
1421 TransitionData ,
15- WorkspaceAction ,
1622 WorkspaceState ,
1723} from '@datahub/types.ts'
1824import {
@@ -96,11 +102,11 @@ export function checkValidityTransformFunction(
96102 }
97103
98104 const { transform } = operationNode . data . formData as unknown as OperationData . DataHubTransformType
99- const defaultOrder = transform . length ? transform : scriptNodes . map ( ( e ) => e . data ?. id )
105+ const defaultOrder = transform . length ? transform : scriptNodes . map ( ( scriptNode ) => scriptNode . data ?. id )
100106
101107 const allTransformScripts : DryRunResults < PolicyOperation , Script > [ ] = [ ]
102108 for ( const scriptId of defaultOrder ) {
103- const script = scriptNodes . find ( ( e ) => e . data ?. id === scriptId )
109+ const script = scriptNodes . find ( ( scriptNode ) => scriptNode . data ?. id === scriptId )
104110 if ( script ) {
105111 const scriptName = script . node as Node < FunctionData >
106112
@@ -222,52 +228,66 @@ export function checkValidityPipeline(
222228}
223229
224230export const loadBehaviorPolicyPipelines = (
225- behaviorPolicy : BehaviorPolicy ,
226- transitionNode : Node ,
231+ behaviorPolicyTransition : BehaviorPolicyOnTransition ,
232+ transitionNode : Node < TransitionData > ,
227233 schemas : Schema [ ] ,
228- scripts : Script [ ] ,
229- store : WorkspaceState & WorkspaceAction
234+ scripts : Script [ ]
230235) => {
231- for ( const transition of behaviorPolicy . onTransitions || [ ] ) {
232- const activeTransition = getActiveTransition ( transition )
233- if ( ! activeTransition )
234- throw new Error ( i18n . t ( 'datahub:error.loading.operation.noTransition' , { source : activeTransition } ) as string )
236+ const activeTransition = getActiveTransition ( behaviorPolicyTransition )
237+ if ( ! activeTransition )
238+ throw new Error ( i18n . t ( 'datahub:error.loading.operation.noTransition' , { source : activeTransition } ) as string )
235239
236- const transitionOnEvent = transition [ activeTransition ]
237- if ( ! transitionOnEvent )
238- throw new Error ( i18n . t ( 'datahub:error.loading.operation.noTransition' , { source : activeTransition } ) as string )
240+ const transitionOnEvent = behaviorPolicyTransition [ activeTransition ]
241+ if ( ! transitionOnEvent )
242+ throw new Error ( i18n . t ( 'datahub:error.loading.operation.noTransition' , { source : activeTransition } ) as string )
239243
240- loadPipeline ( transitionNode , transitionOnEvent . pipeline , null , schemas , scripts , store )
241- }
244+ return loadPipeline ( transitionNode , transitionOnEvent . pipeline , null , schemas , scripts )
242245}
243246
244247export const loadDataPolicyPipelines = (
245248 policy : DataPolicy ,
246249 schemas : Schema [ ] ,
247250 scripts : Script [ ] ,
248- store : WorkspaceState & WorkspaceAction
251+ dataPolicyNode : Node < DataPolicyData >
249252) => {
250- const dataNode = store . nodes . find ( ( node ) => node . id === policy . id )
251- if ( ! dataNode )
253+ if ( dataPolicyNode . id !== policy . id )
252254 throw new Error (
253255 i18n . t ( 'datahub:error.loading.connection.notFound' , { type : DataHubNodeType . DATA_POLICY } ) as string
254256 )
255257
256- if ( policy . onSuccess && policy . onSuccess . pipeline )
257- loadPipeline ( dataNode , policy . onSuccess . pipeline , DataPolicyData . Handle . ON_SUCCESS , schemas , scripts , store )
258- if ( policy . onFailure && policy . onFailure . pipeline )
259- loadPipeline ( dataNode , policy . onFailure . pipeline , DataPolicyData . Handle . ON_ERROR , schemas , scripts , store )
258+ const newNodes : ( NodeAddChange | Connection ) [ ] = [ ]
259+
260+ if ( policy . onSuccess && policy . onSuccess . pipeline ) {
261+ const res = loadPipeline (
262+ dataPolicyNode ,
263+ policy . onSuccess . pipeline ,
264+ DataPolicyData . Handle . ON_SUCCESS ,
265+ schemas ,
266+ scripts
267+ )
268+ newNodes . push ( ...res )
269+ }
270+ if ( policy . onFailure && policy . onFailure . pipeline ) {
271+ const res = loadPipeline (
272+ dataPolicyNode ,
273+ policy . onFailure . pipeline ,
274+ DataPolicyData . Handle . ON_ERROR ,
275+ schemas ,
276+ scripts
277+ )
278+ newNodes . push ( ...res )
279+ }
280+
281+ return newNodes
260282}
261283
262284export const loadPipeline = (
263285 parentNode : Node ,
264286 pipeline : Array < PolicyOperation > ,
265287 handle : DataPolicyData . Handle | null ,
266288 schemas : Schema [ ] ,
267- scripts : Script [ ] ,
268- store : WorkspaceState & WorkspaceAction
289+ scripts : Script [ ]
269290) => {
270- const { onAddNodes, onConnect } = store
271291 if ( ! parentNode )
272292 throw new Error ( i18n . t ( 'datahub:error.loading.schema.unknown' , { type : DataHubNodeType . DATA_POLICY } ) as string )
273293
@@ -283,6 +303,8 @@ export const loadPipeline = (
283303 return position
284304 }
285305
306+ const newNodes : ( NodeAddChange | Connection ) [ ] = [ ]
307+
286308 let connect : Connection = {
287309 source : parentNode . id ,
288310 target : null ,
@@ -320,24 +342,25 @@ export const loadPipeline = (
320342 } ,
321343 }
322344
323- loadSchema (
345+ const deserialisers = loadSchema (
324346 operationNode ,
325347 OperationData . Handle . DESERIALISER ,
326348 - 200 ,
327349 deserializer . arguments as SchemaReference ,
328- schemas ,
329- store
350+ schemas
330351 )
331- loadSchema (
352+ const serialisers = loadSchema (
332353 operationNode ,
333354 OperationData . Handle . SERIALISER ,
334355 200 ,
335356 policyOperation . arguments as SchemaReference ,
336- schemas ,
337- store
357+ schemas
338358 )
339359
340- loadScripts ( operationNode , functions , scripts , store )
360+ const allScripts = loadScripts ( operationNode , functions , scripts )
361+ newNodes . push ( ...deserialisers )
362+ newNodes . push ( ...serialisers )
363+ newNodes . push ( ...allScripts )
341364 }
342365 break
343366 default :
@@ -355,8 +378,7 @@ export const loadPipeline = (
355378
356379 if ( ! operationNode ) throw new Error ( i18n . t ( 'datahub:error.loading.operation.unknown' ) as string )
357380 if ( ! Array . isArray ( operationNode ) ) {
358- onAddNodes ( [ { item : operationNode , type : 'add' } as NodeAddChange ] )
359- onConnect ( { ...connect , target : operationNode . id } )
381+ newNodes . push ( { item : operationNode , type : 'add' } , { ...connect , target : operationNode . id } )
360382 connect = {
361383 source : operationNode . id ,
362384 target : null ,
@@ -366,4 +388,6 @@ export const loadPipeline = (
366388 operationNode = undefined
367389 }
368390 }
391+
392+ return newNodes
369393}
0 commit comments