github.com/IBM-Cloud/bluemix-go@v0.0.0-20240423071914-9e96525baef4/api/mccp/mccpv2/filter.go (about) 1 package mccpv2 2 3 import ( 4 "errors" 5 "fmt" 6 "strings" 7 ) 8 9 var ( 10 //ErrFilterNameMissing ... 11 ErrFilterNameMissing = errors.New("Filter must have a name") 12 13 //ErrFilterMissingOp .. 14 ErrFilterMissingOp = errors.New("Filter must have an operator") 15 ) 16 17 //Filter ... 18 type Filter struct { 19 name string 20 op string 21 value string 22 } 23 24 //Name ... 25 func (f Filter) Name(name string) Filter { 26 f.name = name 27 return f 28 } 29 30 //Eq ... 31 func (f Filter) Eq(target string) Filter { 32 f.op = ":" 33 f.value = target 34 return f 35 } 36 37 //In ... 38 func (f Filter) In(targets ...string) Filter { 39 f.op = " IN " 40 f.value = strings.Join(targets, ",") 41 return f 42 } 43 44 //Ge ... 45 func (f Filter) Ge(target string) Filter { 46 f.op = ":" 47 f.value = target 48 return f 49 } 50 51 //Le ... 52 func (f Filter) Le(target string) Filter { 53 f.op = "<=" 54 f.value = target 55 return f 56 } 57 58 //Gt ... 59 func (f Filter) Gt(target string) Filter { 60 f.op = ">" 61 f.value = target 62 return f 63 } 64 65 //Lt ... 66 func (f Filter) Lt(target string) Filter { 67 f.op = "<" 68 f.value = target 69 return f 70 } 71 72 func (f Filter) validate() error { 73 if f.name == "" { 74 return ErrFilterNameMissing 75 } 76 if f.op == "" { 77 return ErrFilterMissingOp 78 } 79 return nil 80 } 81 82 //Build ... 83 func (f Filter) Build() (string, error) { 84 err := f.validate() 85 if err != nil { 86 return "", nil 87 } 88 return fmt.Sprintf("%s%s%s;", f.name, f.op, f.value), nil 89 }