github.com/profzone/eden-framework@v1.0.10/internal/generator/api/operator.go (about) 1 package api 2 3 type OperatorGroup struct { 4 Name string `json:"name"` 5 Path string `json:"path"` 6 Methods map[string]*OperatorMethod `json:"methods"` 7 IsPush bool `json:"isPush"` 8 } 9 10 func NewOperatorGroup(name, path string) *OperatorGroup { 11 return &OperatorGroup{ 12 Name: name, 13 Path: path, 14 Methods: make(map[string]*OperatorMethod), 15 } 16 } 17 18 func (g *OperatorGroup) AddMethod(method *OperatorMethod) { 19 method.Group = g 20 g.Methods[method.Name] = method 21 } 22 23 func (g *OperatorGroup) AddMethods(methods ...*OperatorMethod) { 24 for _, method := range methods { 25 g.AddMethod(method) 26 } 27 } 28 29 func (g *OperatorGroup) WalkMethods(walker func(m *OperatorMethod)) { 30 for _, method := range g.Methods { 31 walker(method) 32 } 33 } 34 35 type OperatorMethod struct { 36 Group *OperatorGroup `json:"-"` 37 Name string `json:"name"` 38 Path string `json:"path"` 39 Inputs []string `json:"inputs"` 40 Outputs []string `json:"outputs"` 41 } 42 43 func NewOperatorMethod(group *OperatorGroup, name, path string) *OperatorMethod { 44 return &OperatorMethod{ 45 Group: group, 46 Name: name, 47 Path: path, 48 Inputs: make([]string, 0), 49 Outputs: make([]string, 0), 50 } 51 } 52 53 func (m *OperatorMethod) AddInput(model *OperatorModel) { 54 m.Inputs = append(m.Inputs, model.ID) 55 } 56 57 func (m *OperatorMethod) AddOutput(model *OperatorModel) { 58 m.Outputs = append(m.Outputs, model.ID) 59 } 60 61 func (m *OperatorMethod) WalkInputs(walker func(i string)) { 62 for _, input := range m.Inputs { 63 walker(input) 64 } 65 } 66 67 func (m *OperatorMethod) WalkOutputs(walker func(i string)) { 68 for _, input := range m.Outputs { 69 walker(input) 70 } 71 }