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  }