Skip to content

Commit

Permalink
mysql
Browse files Browse the repository at this point in the history
  • Loading branch information
blackroot committed Jan 11, 2021
1 parent b0155a1 commit 041cd60
Showing 1 changed file with 49 additions and 0 deletions.
49 changes: 49 additions & 0 deletions xmysql/query.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package xmysql

import "github.com/jinzhu/gorm"

type QueryOption struct {
Skip uint
Limit uint
Order []string
}

type QueryOptFunc func(*QueryOption)

func ApplyQueryOpts(db *gorm.DB, opts ...QueryOptFunc) *gorm.DB {
queryOption := &QueryOption{}
for _, opt := range opts {
opt(queryOption)
}

for _, order := range queryOption.Order {
db = db.Order(order)
}

if queryOption.Limit != 0 {
db = db.Limit(queryOption.Limit)
}

if queryOption.Skip != 0 {
db = db.Offset(queryOption.Skip)
}
return db
}

func Skip(skip uint) QueryOptFunc {
return func(option *QueryOption) {
option.Skip = skip
}
}

func Limit(limit uint) QueryOptFunc {
return func(option *QueryOption) {
option.Limit = limit
}
}

func Order(order ...string) QueryOptFunc {
return func(option *QueryOption) {
option.Order = append(option.Order, order...)
}
}

0 comments on commit 041cd60

Please sign in to comment.