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 }