add token value comparer to TokenBuilder (#112)
qb: add token value comparer to TokenBuilder
This commit is contained in:
committed by
Michal Matczuk
parent
8b6f083cdc
commit
dd98b0e363
61
qb/token.go
61
qb/token.go
@@ -22,51 +22,101 @@ func (t TokenBuilder) Eq() Cmp {
|
|||||||
return t.cmp(eq, nil)
|
return t.cmp(eq, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// EqValue produces token(column)=?
|
||||||
|
func (t TokenBuilder) EqValue() Cmp {
|
||||||
|
return t.valueCmp(eq, "")
|
||||||
|
}
|
||||||
|
|
||||||
// EqNamed produces token(column)=token(?) with a custom parameter name.
|
// EqNamed produces token(column)=token(?) with a custom parameter name.
|
||||||
func (t TokenBuilder) EqNamed(names ...string) Cmp {
|
func (t TokenBuilder) EqNamed(names ...string) Cmp {
|
||||||
return t.cmp(eq, names)
|
return t.cmp(eq, names)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// EqValueNamed produces token(column)=? with a custom parameter name.
|
||||||
|
func (t TokenBuilder) EqValueNamed(name string) Cmp {
|
||||||
|
return t.valueCmp(eq, name)
|
||||||
|
}
|
||||||
|
|
||||||
// Lt produces token(column)<token(?).
|
// Lt produces token(column)<token(?).
|
||||||
func (t TokenBuilder) Lt() Cmp {
|
func (t TokenBuilder) Lt() Cmp {
|
||||||
return t.cmp(lt, nil)
|
return t.cmp(lt, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// LtValue produces token(column)<?.
|
||||||
|
func (t TokenBuilder) LtValue() Cmp {
|
||||||
|
return t.valueCmp(lt, "")
|
||||||
|
}
|
||||||
|
|
||||||
// LtNamed produces token(column)<token(?) with a custom parameter name.
|
// LtNamed produces token(column)<token(?) with a custom parameter name.
|
||||||
func (t TokenBuilder) LtNamed(names ...string) Cmp {
|
func (t TokenBuilder) LtNamed(names ...string) Cmp {
|
||||||
return t.cmp(lt, names)
|
return t.cmp(lt, names)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// LtValueNamed produces token(column)<? with a custom parameter name.
|
||||||
|
func (t TokenBuilder) LtValueNamed(name string) Cmp {
|
||||||
|
return t.valueCmp(lt, name)
|
||||||
|
}
|
||||||
|
|
||||||
// LtOrEq produces token(column)<=token(?).
|
// LtOrEq produces token(column)<=token(?).
|
||||||
func (t TokenBuilder) LtOrEq() Cmp {
|
func (t TokenBuilder) LtOrEq() Cmp {
|
||||||
return t.cmp(leq, nil)
|
return t.cmp(leq, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// LtOrEqValue produces token(column)<=?.
|
||||||
|
func (t TokenBuilder) LtOrEqValue() Cmp {
|
||||||
|
return t.valueCmp(leq, "")
|
||||||
|
}
|
||||||
|
|
||||||
// LtOrEqNamed produces token(column)<=token(?) with a custom parameter name.
|
// LtOrEqNamed produces token(column)<=token(?) with a custom parameter name.
|
||||||
func (t TokenBuilder) LtOrEqNamed(names ...string) Cmp {
|
func (t TokenBuilder) LtOrEqNamed(names ...string) Cmp {
|
||||||
return t.cmp(leq, names)
|
return t.cmp(leq, names)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// LtOrEqValueNamed produces token(column)<=? with a custom parameter name.
|
||||||
|
func (t TokenBuilder) LtOrEqValueNamed(name string) Cmp {
|
||||||
|
return t.valueCmp(leq, name)
|
||||||
|
}
|
||||||
|
|
||||||
// Gt produces token(column)>token(?).
|
// Gt produces token(column)>token(?).
|
||||||
func (t TokenBuilder) Gt() Cmp {
|
func (t TokenBuilder) Gt() Cmp {
|
||||||
return t.cmp(gt, nil)
|
return t.cmp(gt, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GtValue produces token(column)>?.
|
||||||
|
func (t TokenBuilder) GtValue() Cmp {
|
||||||
|
return t.valueCmp(gt, "")
|
||||||
|
}
|
||||||
|
|
||||||
// GtNamed produces token(column)>token(?) with a custom parameter name.
|
// GtNamed produces token(column)>token(?) with a custom parameter name.
|
||||||
func (t TokenBuilder) GtNamed(names ...string) Cmp {
|
func (t TokenBuilder) GtNamed(names ...string) Cmp {
|
||||||
return t.cmp(gt, names)
|
return t.cmp(gt, names)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GtValueNamed produces token(column)>? with a custom parameter name.
|
||||||
|
func (t TokenBuilder) GtValueNamed(name string) Cmp {
|
||||||
|
return t.valueCmp(gt, name)
|
||||||
|
}
|
||||||
|
|
||||||
// GtOrEq produces token(column)>=token(?).
|
// GtOrEq produces token(column)>=token(?).
|
||||||
func (t TokenBuilder) GtOrEq() Cmp {
|
func (t TokenBuilder) GtOrEq() Cmp {
|
||||||
return t.cmp(geq, nil)
|
return t.cmp(geq, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GtOrEqValue produces token(column)>=?.
|
||||||
|
func (t TokenBuilder) GtOrEqValue() Cmp {
|
||||||
|
return t.valueCmp(geq, "")
|
||||||
|
}
|
||||||
|
|
||||||
// GtOrEqNamed produces token(column)>=token(?) with a custom parameter name.
|
// GtOrEqNamed produces token(column)>=token(?) with a custom parameter name.
|
||||||
func (t TokenBuilder) GtOrEqNamed(names ...string) Cmp {
|
func (t TokenBuilder) GtOrEqNamed(names ...string) Cmp {
|
||||||
return t.cmp(geq, names)
|
return t.cmp(geq, names)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GtOrEqValueNamed produces token(column)>=? with a custom parameter name.
|
||||||
|
func (t TokenBuilder) GtOrEqValueNamed(name string) Cmp {
|
||||||
|
return t.valueCmp(geq, name)
|
||||||
|
}
|
||||||
|
|
||||||
func (t TokenBuilder) cmp(op op, names []string) Cmp {
|
func (t TokenBuilder) cmp(op op, names []string) Cmp {
|
||||||
s := names
|
s := names
|
||||||
if s == nil {
|
if s == nil {
|
||||||
@@ -78,3 +128,14 @@ func (t TokenBuilder) cmp(op op, names []string) Cmp {
|
|||||||
value: Fn("token", s...),
|
value: Fn("token", s...),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (t TokenBuilder) valueCmp(op op, name string) Cmp {
|
||||||
|
if name == "" {
|
||||||
|
name = "token"
|
||||||
|
}
|
||||||
|
return Cmp{
|
||||||
|
op: op,
|
||||||
|
column: fmt.Sprint("token(", strings.Join(t, ","), ")"),
|
||||||
|
value: param(name),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -70,6 +70,56 @@ func TestToken(t *testing.T) {
|
|||||||
S: "token(a,b)>=token(?,?)",
|
S: "token(a,b)>=token(?,?)",
|
||||||
N: []string{"c", "d"},
|
N: []string{"c", "d"},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
C: Token("a", "b").EqValue(),
|
||||||
|
S: "token(a,b)=?",
|
||||||
|
N: []string{"token"},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
C: Token("a", "b").EqValueNamed("c"),
|
||||||
|
S: "token(a,b)=?",
|
||||||
|
N: []string{"c"},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
C: Token("a", "b").LtValue(),
|
||||||
|
S: "token(a,b)<?",
|
||||||
|
N: []string{"token"},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
C: Token("a", "b").LtValueNamed("c"),
|
||||||
|
S: "token(a,b)<?",
|
||||||
|
N: []string{"c"},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
C: Token("a", "b").LtOrEqValue(),
|
||||||
|
S: "token(a,b)<=?",
|
||||||
|
N: []string{"token"},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
C: Token("a", "b").LtOrEqValueNamed("c"),
|
||||||
|
S: "token(a,b)<=?",
|
||||||
|
N: []string{"c"},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
C: Token("a", "b").GtValue(),
|
||||||
|
S: "token(a,b)>?",
|
||||||
|
N: []string{"token"},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
C: Token("a", "b").GtValueNamed("c"),
|
||||||
|
S: "token(a,b)>?",
|
||||||
|
N: []string{"c"},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
C: Token("a", "b").GtOrEqValue(),
|
||||||
|
S: "token(a,b)>=?",
|
||||||
|
N: []string{"token"},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
C: Token("a", "b").GtOrEqValueNamed("c"),
|
||||||
|
S: "token(a,b)>=?",
|
||||||
|
N: []string{"c"},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
buf := bytes.Buffer{}
|
buf := bytes.Buffer{}
|
||||||
|
|||||||
Reference in New Issue
Block a user