Skip to content

Commit 0016da9

Browse files
committed
feat: add getPayloadById method to DFlow service for enhanced flow data retrieval
1 parent ddbb6b9 commit 0016da9

File tree

1 file changed

+76
-5
lines changed

1 file changed

+76
-5
lines changed

src/components/d-flow/DFlow.service.ts

Lines changed: 76 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,21 @@
11
import {ReactiveArrayService} from "../../utils";
2-
import type {
2+
import {
3+
DataTypeIdentifier,
4+
DataTypeIdentifierInput,
35
Flow,
4-
FlowSetting, LiteralValue,
6+
FlowInput,
7+
FlowSetting,
8+
LiteralValue,
59
NamespacesProjectsFlowsCreateInput,
610
NamespacesProjectsFlowsCreatePayload,
711
NamespacesProjectsFlowsDeleteInput,
8-
NamespacesProjectsFlowsDeletePayload, NamespacesProjectsFlowsUpdateInput, NamespacesProjectsFlowsUpdatePayload,
9-
NodeFunction, NodeFunctionIdWrapper,
10-
NodeParameter, ReferenceValue
12+
NamespacesProjectsFlowsDeletePayload,
13+
NamespacesProjectsFlowsUpdateInput,
14+
NamespacesProjectsFlowsUpdatePayload,
15+
NodeFunction,
16+
NodeFunctionIdWrapper,
17+
NodeParameter,
18+
ReferenceValue
1119
} from "@code0-tech/sagittarius-graphql-types";
1220

1321

@@ -43,6 +51,67 @@ export abstract class DFlowReactiveService extends ReactiveArrayService<Flow> {
4351
return this.getById(flowId)?.nodes?.nodes?.find(node => node?.id === nodeId)!!
4452
}
4553

54+
getPayloadById(flowId: Flow['id']): FlowInput | undefined {
55+
const flow = this.getById(flowId)
56+
57+
const getDataTypeIdentifierPayload = (identifier: DataTypeIdentifier): DataTypeIdentifierInput => {
58+
return {
59+
...(identifier?.dataType ? {
60+
dataTypeId: identifier?.dataType?.id
61+
} : {}),
62+
...(identifier?.genericKey ? {
63+
genericKey: identifier?.genericKey
64+
} : {}),
65+
...(identifier?.genericType ? {
66+
genericType: {
67+
dataTypeId: identifier?.genericType?.dataType?.id!,
68+
genericMappers: identifier?.genericType?.genericMappers?.map(genericMap => ({
69+
target: genericMap.target!,
70+
sourceDataTypeIdentifiers: genericMap.sourceDataTypeIdentifiers?.map(getDataTypeIdentifierPayload) ?? []
71+
})) ?? []
72+
}
73+
} : {})
74+
}
75+
}
76+
77+
return {
78+
name: flow?.name!,
79+
type: flow?.type?.id!,
80+
settings: flow?.settings?.nodes?.map(setting => {
81+
return {
82+
flowSettingIdentifier: setting?.flowSettingIdentifier!,
83+
value: setting?.value!,
84+
}
85+
}),
86+
nodes: flow?.nodes?.nodes?.map(node => {
87+
return {
88+
id: node?.id!,
89+
nextNodeId: node?.nextNodeId!,
90+
parameters: node?.parameters?.nodes?.map(parameter => {
91+
return {
92+
runtimeParameterDefinitionId: parameter?.runtimeParameter?.id!,
93+
value: parameter?.value?.__typename === "NodeFunctionIdWrapper" ? {
94+
nodeFunctionId: parameter.value.id!
95+
} : parameter?.value?.__typename === "LiteralValue" ? {
96+
literalValue: parameter.value.value!
97+
} : {
98+
referenceValue: {
99+
dataTypeIdentifier: getDataTypeIdentifierPayload((parameter?.value as ReferenceValue).dataTypeIdentifier!),
100+
depth: (parameter?.value as ReferenceValue).depth!,
101+
node: (parameter?.value as ReferenceValue).node!,
102+
nodeFunctionId: (parameter?.value as ReferenceValue).nodeFunctionId!,
103+
referencePath: (parameter?.value as ReferenceValue).referencePath!,
104+
scope: (parameter?.value as ReferenceValue).scope!,
105+
}
106+
},
107+
}
108+
}) ?? [],
109+
runtimeFunctionId: node?.functionDefinition?.runtimeFunctionDefinition?.id!
110+
}
111+
}) ?? [],
112+
startingNodeId: flow?.startingNodeId!,
113+
}
114+
}
46115

47116
async deleteNodeById(flowId: Flow['id'], nodeId: NodeFunction['id']): Promise<void> {
48117
const flow = this.getById(flowId)
@@ -132,7 +201,9 @@ export abstract class DFlowReactiveService extends ReactiveArrayService<Flow> {
132201
}
133202

134203
abstract flowCreate(payload: NamespacesProjectsFlowsCreateInput): Promise<NamespacesProjectsFlowsCreatePayload | undefined>
204+
135205
abstract flowDelete(payload: NamespacesProjectsFlowsDeleteInput): Promise<NamespacesProjectsFlowsDeletePayload | undefined>
206+
136207
abstract flowUpdate(payload: NamespacesProjectsFlowsUpdateInput): Promise<NamespacesProjectsFlowsUpdatePayload | undefined>
137208
}
138209

0 commit comments

Comments
 (0)