qb: extracted function from cmp

This commit is contained in:
Michał Matczuk
2017-09-22 00:07:53 +02:00
parent 9e40fcfed4
commit fdb26806a9
4 changed files with 135 additions and 127 deletions

View File

@@ -9,110 +9,72 @@ import (
"strings"
)
// TokenBuilder helps implement pagination using token function.
type TokenBuilder []string
// Token creates a new TokenBuilder.
func Token(columns ...string) TokenBuilder {
return TokenBuilder(columns)
}
// TokenBuilder helps implement pagination using token function.
type TokenBuilder []string
// Eq produces token(column)=token(?).
func (t TokenBuilder) Eq() Cmp {
return Cmp{
op: eq,
fn: "token",
column: fmt.Sprint("token(", strings.Join(t, ","), ")"),
names: t,
}
return t.cmp(eq, nil)
}
// EqNamed produces token(column)=token(?) with a custom parameter name.
func (t TokenBuilder) EqNamed(names ...string) Cmp {
return Cmp{
op: eq,
fn: "token",
column: fmt.Sprint("token(", strings.Join(t, ","), ")"),
names: names,
}
return t.cmp(eq, names)
}
// Lt produces token(column)<token(?).
func (t TokenBuilder) Lt() Cmp {
return Cmp{
op: lt,
fn: "token",
column: fmt.Sprint("token(", strings.Join(t, ","), ")"),
names: t,
}
return t.cmp(lt, nil)
}
// LtNamed produces token(column)<token(?) with a custom parameter name.
func (t TokenBuilder) LtNamed(names ...string) Cmp {
return Cmp{
op: lt,
fn: "token",
column: fmt.Sprint("token(", strings.Join(t, ","), ")"),
names: names,
}
return t.cmp(lt, names)
}
// LtOrEq produces token(column)<=token(?).
func (t TokenBuilder) LtOrEq() Cmp {
return Cmp{
op: leq,
fn: "token",
column: fmt.Sprint("token(", strings.Join(t, ","), ")"),
names: t,
}
return t.cmp(leq, nil)
}
// LtOrEqNamed produces token(column)<=token(?) with a custom parameter name.
func (t TokenBuilder) LtOrEqNamed(names ...string) Cmp {
return Cmp{
op: leq,
fn: "token",
column: fmt.Sprint("token(", strings.Join(t, ","), ")"),
names: names,
}
return t.cmp(leq, names)
}
// Gt produces token(column)>token(?).
func (t TokenBuilder) Gt() Cmp {
return Cmp{
op: gt,
fn: "token",
column: fmt.Sprint("token(", strings.Join(t, ","), ")"),
names: t,
}
return t.cmp(gt, nil)
}
// GtNamed produces token(column)>token(?) with a custom parameter name.
func (t TokenBuilder) GtNamed(names ...string) Cmp {
return Cmp{
op: gt,
fn: "token",
column: fmt.Sprint("token(", strings.Join(t, ","), ")"),
names: names,
}
return t.cmp(gt, names)
}
// GtOrEq produces token(column)>=token(?).
func (t TokenBuilder) GtOrEq() Cmp {
return Cmp{
op: geq,
fn: "token",
column: fmt.Sprint("token(", strings.Join(t, ","), ")"),
names: t,
}
return t.cmp(geq, nil)
}
// GtOrEqNamed produces token(column)>=token(?) with a custom parameter name.
func (t TokenBuilder) GtOrEqNamed(names ...string) Cmp {
return t.cmp(geq, names)
}
func (t TokenBuilder) cmp(op op, names []string) Cmp {
s := names
if s == nil {
s = t
}
return Cmp{
op: geq,
fn: "token",
op: op,
column: fmt.Sprint("token(", strings.Join(t, ","), ")"),
names: names,
fn: Fn("token", s...),
}
}