github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/libraries/go-xorm/builder/cond_not.go (about)

     1  package builder
     2  
     3  import "fmt"
     4  
     5  type Not [1]Cond
     6  
     7  var _ Cond = Not{}
     8  
     9  func (not Not) WriteTo(w Writer) error {
    10  	if _, err := fmt.Fprint(w, "NOT "); err != nil {
    11  		return err
    12  	}
    13  	switch not[0].(type) {
    14  	case condAnd, condOr:
    15  		if _, err := fmt.Fprint(w, "("); err != nil {
    16  			return err
    17  		}
    18  	}
    19  
    20  	if err := not[0].WriteTo(w); err != nil {
    21  		return err
    22  	}
    23  
    24  	switch not[0].(type) {
    25  	case condAnd, condOr:
    26  		if _, err := fmt.Fprint(w, ")"); err != nil {
    27  			return err
    28  		}
    29  	}
    30  
    31  	return nil
    32  }
    33  
    34  func (not Not) And(conds ...Cond) Cond {
    35  	return And(not, And(conds...))
    36  }
    37  
    38  func (not Not) Or(conds ...Cond) Cond {
    39  	return Or(not, Or(conds...))
    40  }
    41  
    42  func (not Not) IsValid() bool {
    43  	return not[0] != nil && not[0].IsValid()
    44  }