wp-go/model/condition.go

87 lines
1.3 KiB
Go
Raw Normal View History

package model
type QueryCondition struct {
where ParseWhere
fields string
group string
order SqlBuilder
join SqlBuilder
having SqlBuilder
page int
limit int
offset int
in [][]any
}
func Conditions(fns ...Condition) *QueryCondition {
r := &QueryCondition{}
for _, fn := range fns {
fn(r)
}
if r.fields == "" {
r.fields = "*"
}
return r
}
type Condition func(c *QueryCondition)
func Where(where ParseWhere) Condition {
return func(c *QueryCondition) {
c.where = where
}
}
func Fields(fields string) Condition {
return func(c *QueryCondition) {
c.fields = fields
}
}
func Group(group string) Condition {
return func(c *QueryCondition) {
c.group = group
}
}
func Order(order SqlBuilder) Condition {
return func(c *QueryCondition) {
c.order = order
}
}
func Join(join SqlBuilder) Condition {
return func(c *QueryCondition) {
c.join = join
}
}
func Having(having SqlBuilder) Condition {
return func(c *QueryCondition) {
c.having = having
}
}
func Page(page int) Condition {
return func(c *QueryCondition) {
c.page = page
}
}
func Limit(limit int) Condition {
return func(c *QueryCondition) {
c.limit = limit
}
}
func Offset(offset int) Condition {
return func(c *QueryCondition) {
c.offset = offset
}
}
func In(in ...[]any) Condition {
return func(c *QueryCondition) {
c.in = append(c.in, in...)
}
}