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  }