1package exp 2 3type ( 4 ranged struct { 5 lhs Expression 6 rhs RangeVal 7 op RangeOperation 8 } 9 rangeVal struct { 10 start interface{} 11 end interface{} 12 } 13) 14 15// used internally to create an BETWEEN comparison RangeExpression 16func between(lhs Expression, rhs RangeVal) RangeExpression { 17 return NewRangeExpression(BetweenOp, lhs, rhs) 18} 19 20// used internally to create an NOT BETWEEN comparison RangeExpression 21func notBetween(lhs Expression, rhs RangeVal) RangeExpression { 22 return NewRangeExpression(NotBetweenOp, lhs, rhs) 23} 24 25func NewRangeExpression(op RangeOperation, lhs Expression, rhs RangeVal) RangeExpression { 26 return ranged{op: op, lhs: lhs, rhs: rhs} 27} 28 29func (r ranged) Clone() Expression { 30 return NewRangeExpression(r.op, r.lhs.Clone(), r.rhs) 31} 32 33func (r ranged) Expression() Expression { 34 return r 35} 36 37func (r ranged) RHS() RangeVal { 38 return r.rhs 39} 40 41func (r ranged) LHS() Expression { 42 return r.lhs 43} 44 45func (r ranged) Op() RangeOperation { 46 return r.op 47} 48 49// Creates a new Range to be used with a Between expression 50// exp.C("col").Between(exp.Range(1, 10)) 51func NewRangeVal(start, end interface{}) RangeVal { 52 return rangeVal{start: start, end: end} 53} 54 55func (rv rangeVal) Start() interface{} { 56 return rv.start 57} 58 59func (rv rangeVal) End() interface{} { 60 return rv.end 61} 62