/
qm.go
39 lines (32 loc) · 809 Bytes
/
qm.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package hdboil
import (
"github.com/hdget/hdsdk/lib/pagination"
"github.com/hdget/hdsdk/protobuf"
"github.com/volatiletech/sqlboiler/v4/queries/qm"
)
type qmBuilder struct {
mods []qm.QueryMod
}
func NewQmBuilder(mods ...qm.QueryMod) *qmBuilder {
return &qmBuilder{
mods: mods,
}
}
func (q *qmBuilder) Append(mods ...qm.QueryMod) *qmBuilder {
q.mods = append(q.mods, mods...)
return q
}
func (q *qmBuilder) Concat(modSlices ...[]qm.QueryMod) *qmBuilder {
for _, mods := range modSlices {
q.mods = append(q.mods, mods...)
}
return q
}
func (q *qmBuilder) Limit(list *protobuf.ListParam) *qmBuilder {
p := pagination.NewWithParam(list)
q.mods = append(q.mods, qm.Offset(int(p.Offset)), qm.Limit(int(p.PageSize)))
return q
}
func (q *qmBuilder) Output() []qm.QueryMod {
return q.mods
}