scope.go 637 B

12345678910111213141516171819202122232425262728293031323334
  1. package models
  2. import (
  3. "gorm.io/gorm"
  4. )
  5. func Paginate(pageNum, pageSize int) func(db *gorm.DB) *gorm.DB {
  6. return func(db *gorm.DB) *gorm.DB {
  7. offset := (pageNum - 1) * pageSize
  8. return db.Offset(offset).Limit(pageSize)
  9. }
  10. }
  11. func Query(query string, args ...interface{}) func(db *gorm.DB) *gorm.DB {
  12. implement := false
  13. for _, arg := range args {
  14. switch arg.(type) {
  15. case string:
  16. if len(arg.(string)) > 0 {
  17. implement = true
  18. }
  19. default:
  20. implement = true
  21. }
  22. }
  23. if implement {
  24. return func(db *gorm.DB) *gorm.DB {
  25. return db.Where(query, args...)
  26. }
  27. }
  28. return func(db *gorm.DB) *gorm.DB {
  29. return db
  30. }
  31. }