From 043b622bb205dd6e7545e9b72e4ad0ec55bacc09 Mon Sep 17 00:00:00 2001 From: sujit Date: Mon, 18 Nov 2024 22:15:19 +0545 Subject: [PATCH] feat: [wip] - Implement html node --- dag/v2/dag.go | 8 ++++++-- examples/v2.go | 6 +++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/dag/v2/dag.go b/dag/v2/dag.go index 381cb13..9d0980d 100644 --- a/dag/v2/dag.go +++ b/dag/v2/dag.go @@ -187,7 +187,7 @@ func (tm *DAG) ProcessTask(ctx context.Context, payload []byte) Result { if next == "true" { nodes, err := tm.GetNextNodes(manager.currentNode) if err != nil { - return Result{Error: err} + return Result{Error: err, Ctx: ctx} } if len(nodes) > 0 { 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) 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) return <-resultCh diff --git a/examples/v2.go b/examples/v2.go index 20bbd75..9102843 100644 --- a/examples/v2.go +++ b/examples/v2.go @@ -35,7 +35,7 @@ func Form(ctx context.Context, payload json.RawMessage) v2.Result { func NodeA(ctx context.Context, payload json.RawMessage) v2.Result { var data map[string]any 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" updatedPayload, _ := json.Marshal(data) @@ -98,10 +98,10 @@ func main() { dag.AddNode(v2.Process, "NodeB", NodeB) dag.AddNode(v2.Process, "NodeC", NodeC) dag.AddNode(v2.Page, "Result", Result) - dag.AddEdge("Form", "NodeA") + // dag.AddEdge("Form", "NodeA") dag.AddEdge("NodeA", "NodeB") dag.AddEdge("NodeB", "NodeC") - dag.AddEdge("NodeC", "Result") + // dag.AddEdge("NodeC", "Result") if dag.Error != nil { panic(dag.Error) }