feat: [wip] - Implement html node

This commit is contained in:
sujit
2024-11-18 22:15:19 +05:45
parent b292152663
commit 043b622bb2
2 changed files with 9 additions and 5 deletions

View File

@@ -187,7 +187,7 @@ func (tm *DAG) ProcessTask(ctx context.Context, payload []byte) Result {
if next == "true" { if next == "true" {
nodes, err := tm.GetNextNodes(manager.currentNode) nodes, err := tm.GetNextNodes(manager.currentNode)
if err != nil { if err != nil {
return Result{Error: err} return Result{Error: err, Ctx: ctx}
} }
if len(nodes) > 0 { if len(nodes) > 0 {
ctx = context.WithValue(ctx, "initial_node", nodes[0].ID) ctx = context.WithValue(ctx, "initial_node", nodes[0].ID)
@@ -195,7 +195,11 @@ func (tm *DAG) ProcessTask(ctx context.Context, payload []byte) Result {
} }
firstNode, err := tm.parseInitialNode(ctx) firstNode, err := tm.parseInitialNode(ctx)
if err != nil { if err != nil {
return Result{Error: err} return Result{Error: err, Ctx: ctx}
}
node, ok := tm.nodes.Get(firstNode)
if ok && node.Type != Page && payload == nil {
return Result{Error: fmt.Errorf("payload is required for node %s", firstNode), Ctx: ctx}
} }
manager.ProcessTask(ctx, taskID, firstNode, payload) manager.ProcessTask(ctx, taskID, firstNode, payload)
return <-resultCh return <-resultCh

View File

@@ -35,7 +35,7 @@ func Form(ctx context.Context, payload json.RawMessage) v2.Result {
func NodeA(ctx context.Context, payload json.RawMessage) v2.Result { func NodeA(ctx context.Context, payload json.RawMessage) v2.Result {
var data map[string]any var data map[string]any
if err := json.Unmarshal(payload, &data); err != nil { if err := json.Unmarshal(payload, &data); err != nil {
return v2.Result{Error: err} return v2.Result{Error: err, Ctx: ctx}
} }
data["allowed_voting"] = data["age"] == "18" data["allowed_voting"] = data["age"] == "18"
updatedPayload, _ := json.Marshal(data) updatedPayload, _ := json.Marshal(data)
@@ -98,10 +98,10 @@ func main() {
dag.AddNode(v2.Process, "NodeB", NodeB) dag.AddNode(v2.Process, "NodeB", NodeB)
dag.AddNode(v2.Process, "NodeC", NodeC) dag.AddNode(v2.Process, "NodeC", NodeC)
dag.AddNode(v2.Page, "Result", Result) dag.AddNode(v2.Page, "Result", Result)
dag.AddEdge("Form", "NodeA") // dag.AddEdge("Form", "NodeA")
dag.AddEdge("NodeA", "NodeB") dag.AddEdge("NodeA", "NodeB")
dag.AddEdge("NodeB", "NodeC") dag.AddEdge("NodeB", "NodeC")
dag.AddEdge("NodeC", "Result") // dag.AddEdge("NodeC", "Result")
if dag.Error != nil { if dag.Error != nil {
panic(dag.Error) panic(dag.Error)
} }