-
Notifications
You must be signed in to change notification settings - Fork 439
/
Copy pathdao_data_trigger.go
40 lines (33 loc) · 1.01 KB
/
dao_data_trigger.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package workflow
import (
"github.com/go-gorp/gorp"
"github.com/ovh/cds/sdk"
)
func insertNodeTriggerData(db gorp.SqlExecutor, w *sdk.Workflow, n *sdk.Node) error {
if n.Triggers == nil || len(n.Triggers) == 0 {
return nil
}
for i := range n.Triggers {
t := &n.Triggers[i]
t.ID = 0
// Is child already exist
if t.ChildNode.ID == 0 {
// Create child to get its ID
if err := insertNodeData(db, w, &t.ChildNode, false); err != nil {
return sdk.WrapError(err, "Unable to insert destination node")
}
}
t.ChildNodeID = t.ChildNode.ID
t.ParentNodeID = n.ID
// Create Trigger
dbTrigger := dbNodeTriggerData(*t)
if err := db.Insert(&dbTrigger); err != nil {
return sdk.WrapError(err, "insertNodeTriggerData> Unable to insert workflow node trigger")
}
t.ID = dbTrigger.ID
if _, err := db.Exec("UPDATE w_node SET trigger_id = $1 WHERE id = $2", t.ID, t.ChildNodeID); err != nil {
return sdk.WrapError(err, "insertNodeTriggerData> Unable to update trigger parent")
}
}
return nil
}