package models import ( "gorm.io/gorm" ) func Paginate(pageNum, pageSize int) func(db *gorm.DB) *gorm.DB { return func(db *gorm.DB) *gorm.DB { offset := (pageNum - 1) * pageSize return db.Offset(offset).Limit(pageSize) } } func Query(query string, args ...interface{}) func(db *gorm.DB) *gorm.DB { implement := false for _, arg := range args { switch arg.(type) { case string: if len(arg.(string)) > 0 { implement = true } default: implement = true } } if implement { return func(db *gorm.DB) *gorm.DB { return db.Where(query, args...) } } return func(db *gorm.DB) *gorm.DB { return db } } func String(query string, arg string) func(db *gorm.DB) *gorm.DB { if len(arg) > 0 { return func(db *gorm.DB) *gorm.DB { return db.Where(query, arg) } } return func(db *gorm.DB) *gorm.DB { return db } }