scope.go 854 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  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. }
  32. func String(query string, arg string) func(db *gorm.DB) *gorm.DB {
  33. if len(arg) > 0 {
  34. return func(db *gorm.DB) *gorm.DB {
  35. return db.Where(query, arg)
  36. }
  37. }
  38. return func(db *gorm.DB) *gorm.DB {
  39. return db
  40. }
  41. }