/
bindings.go
88 lines (78 loc) · 1.78 KB
/
bindings.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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
package utils
import (
"github.com/flyteorg/flyte/flyteidl/clients/go/coreutils"
"github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
)
func MakeBindingDataPromise(fromNode, fromVar string) *core.BindingData {
return &core.BindingData{
Value: &core.BindingData_Promise{
Promise: &core.OutputReference{
Var: fromVar,
NodeId: fromNode,
},
},
}
}
func MakeBindingPromise(fromNode, fromVar, toVar string) *core.Binding {
return &core.Binding{
Var: toVar,
Binding: MakeBindingDataPromise(fromNode, fromVar),
}
}
func MakeBindingDataCollection(bindings ...*core.BindingData) *core.BindingData {
return &core.BindingData{
Value: &core.BindingData_Collection{
Collection: &core.BindingDataCollection{
Bindings: bindings,
},
},
}
}
type Pair struct {
K string
V *core.BindingData
}
func NewPair(k string, v *core.BindingData) Pair {
return Pair{K: k, V: v}
}
func MakeBindingDataMap(pairs ...Pair) *core.BindingData {
bindingsMap := map[string]*core.BindingData{}
for _, p := range pairs {
bindingsMap[p.K] = p.V
}
return &core.BindingData{
Value: &core.BindingData_Map{
Map: &core.BindingDataMap{
Bindings: bindingsMap,
},
},
}
}
func MakePrimitiveBindingData(v interface{}) (*core.BindingData, error) {
p, err := coreutils.MakePrimitive(v)
if err != nil {
return nil, err
}
return &core.BindingData{
Value: &core.BindingData_Scalar{
Scalar: &core.Scalar{
Value: &core.Scalar_Primitive{
Primitive: p,
},
},
},
}, nil
}
func MustMakePrimitiveBindingData(v interface{}) *core.BindingData {
p, err := MakePrimitiveBindingData(v)
if err != nil {
panic(err)
}
return p
}
func MakeBinding(variable string, b *core.BindingData) *core.Binding {
return &core.Binding{
Var: variable,
Binding: b,
}
}