github.com/yongjacky/phoenix-go-orm-builder@v0.3.5/cond_between.go (about) 1 // Copyright 2016 The Xorm Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package builder 6 7 import "fmt" 8 9 // Between implmentes between condition 10 type Between struct { 11 Col string 12 LessVal interface{} 13 MoreVal interface{} 14 } 15 16 var _ Cond = Between{} 17 18 // WriteTo write data to Writer 19 func (between Between) WriteTo(w Writer) error { 20 if _, err := fmt.Fprintf(w, "%s BETWEEN ", between.Col); err != nil { 21 return err 22 } 23 if lv, ok := between.LessVal.(expr); ok { 24 if err := lv.WriteTo(w); err != nil { 25 return err 26 } 27 } else { 28 if _, err := fmt.Fprint(w, "?"); err != nil { 29 return err 30 } 31 w.Append(between.LessVal) 32 } 33 34 if _, err := fmt.Fprint(w, " AND "); err != nil { 35 return err 36 } 37 38 if mv, ok := between.MoreVal.(expr); ok { 39 if err := mv.WriteTo(w); err != nil { 40 return err 41 } 42 } else { 43 if _, err := fmt.Fprint(w, "?"); err != nil { 44 return err 45 } 46 w.Append(between.MoreVal) 47 } 48 49 return nil 50 } 51 52 // And implments And with other conditions 53 func (between Between) And(conds ...Cond) Cond { 54 return And(between, And(conds...)) 55 } 56 57 // Or implments Or with other conditions 58 func (between Between) Or(conds ...Cond) Cond { 59 return Or(between, Or(conds...)) 60 } 61 62 // IsValid tests if the condition is valid 63 func (between Between) IsValid() bool { 64 return len(between.Col) > 0 65 }