fork github.com/doug-martin
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
package exp
|
||||
|
||||
type (
|
||||
ranged struct {
|
||||
lhs Expression
|
||||
rhs RangeVal
|
||||
op RangeOperation
|
||||
}
|
||||
rangeVal struct {
|
||||
start interface{}
|
||||
end interface{}
|
||||
}
|
||||
)
|
||||
|
||||
// used internally to create an BETWEEN comparison RangeExpression
|
||||
func between(lhs Expression, rhs RangeVal) RangeExpression {
|
||||
return NewRangeExpression(BetweenOp, lhs, rhs)
|
||||
}
|
||||
|
||||
// used internally to create an NOT BETWEEN comparison RangeExpression
|
||||
func notBetween(lhs Expression, rhs RangeVal) RangeExpression {
|
||||
return NewRangeExpression(NotBetweenOp, lhs, rhs)
|
||||
}
|
||||
|
||||
func NewRangeExpression(op RangeOperation, lhs Expression, rhs RangeVal) RangeExpression {
|
||||
return ranged{op: op, lhs: lhs, rhs: rhs}
|
||||
}
|
||||
|
||||
func (r ranged) Clone() Expression {
|
||||
return NewRangeExpression(r.op, r.lhs.Clone(), r.rhs)
|
||||
}
|
||||
|
||||
func (r ranged) Expression() Expression {
|
||||
return r
|
||||
}
|
||||
|
||||
func (r ranged) RHS() RangeVal {
|
||||
return r.rhs
|
||||
}
|
||||
|
||||
func (r ranged) LHS() Expression {
|
||||
return r.lhs
|
||||
}
|
||||
|
||||
func (r ranged) Op() RangeOperation {
|
||||
return r.op
|
||||
}
|
||||
|
||||
// Creates a new Range to be used with a Between expression
|
||||
//
|
||||
// exp.C("col").Between(exp.Range(1, 10))
|
||||
func NewRangeVal(start, end interface{}) RangeVal {
|
||||
return rangeVal{start: start, end: end}
|
||||
}
|
||||
|
||||
func (rv rangeVal) Start() interface{} {
|
||||
return rv.start
|
||||
}
|
||||
|
||||
func (rv rangeVal) End() interface{} {
|
||||
return rv.end
|
||||
}
|
||||
Reference in New Issue
Block a user