link_util.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package link
  2. import (
  3. "time"
  4. "github.com/gin-gonic/gin"
  5. "github.com/runningwater/gohub/pkg/app"
  6. "github.com/runningwater/gohub/pkg/cache"
  7. "github.com/runningwater/gohub/pkg/database"
  8. "github.com/runningwater/gohub/pkg/helpers"
  9. "github.com/runningwater/gohub/pkg/paginator"
  10. )
  11. func Get(idStr string) (link Link) {
  12. database.DB.Where("id", idStr).First(&link)
  13. return
  14. }
  15. func GetBy(field, value string) (link Link) {
  16. database.DB.Where("? = ?", field, value).First(&link)
  17. return
  18. }
  19. func All() (links []Link) {
  20. database.DB.Find(&links)
  21. return
  22. }
  23. func AllCached() (links []Link) {
  24. cacheKey := "links:aa"
  25. expireTime := 120 * time.Minute
  26. // 获取数据
  27. cache.GetObject(cacheKey, &links)
  28. if helpers.Empty(links) {
  29. links = All()
  30. if helpers.Empty(links) {
  31. return links
  32. }
  33. cache.Set(cacheKey, links, expireTime)
  34. }
  35. return
  36. }
  37. func IsExist(field, value string) bool {
  38. var count int64
  39. database.DB.Model(Link{}).Where("? = ?", field, value).Count(&count)
  40. return count > 0
  41. }
  42. // Paginate 分页内容
  43. func Paginate(c *gin.Context, pageSize int) (links []Link, paging paginator.Paging) {
  44. paging = paginator.Paginate(
  45. c,
  46. database.DB.Model(Link{}),
  47. &links,
  48. app.V1URL(database.TableName(&Link{})),
  49. pageSize,
  50. )
  51. return
  52. }