You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

91 lines
1.3 KiB

  1. package Database
  2. import "time"
  3. func GetPostById(id string) (Post, error) {
  4. var (
  5. post Post
  6. e error
  7. )
  8. e = DB.Model(&Post{}).
  9. Where("id = ?", id).
  10. First(&post).
  11. Error
  12. return post, e
  13. }
  14. func GetPostsList(limit int, offset int) ([]Post, error) {
  15. var (
  16. posts []Post
  17. e error
  18. )
  19. e = DB.Model(&Post{}).
  20. Order("updated_at desc").
  21. Limit(limit).
  22. Offset(offset).
  23. Find(&posts).
  24. Error
  25. return posts, e
  26. }
  27. func GetPostsListBySubject(limit int, offset int, subject string) ([]Post, error) {
  28. var (
  29. posts []Post
  30. e error
  31. )
  32. e = DB.Model(&Post{}).
  33. Where("subject = ?", subject).
  34. Order("updated_at desc").
  35. Limit(limit).
  36. Offset(offset).
  37. Find(&posts).
  38. Error
  39. return posts, e
  40. }
  41. func GetPostCountBySubject(subject string) (int64, error) {
  42. var (
  43. count int64
  44. e error
  45. )
  46. e = DB.Model(&Post{}).
  47. Where("subject = ?", subject).
  48. Count(&count).
  49. Error
  50. return count, e
  51. }
  52. func CreatePost(post Post) error {
  53. return DB.Model(&Post{}).
  54. Create(&post).
  55. Error
  56. }
  57. func UpdatePost(post Post) error {
  58. return DB.Save(&post).Error
  59. }
  60. func GetLastUpdatedAt() (time.Time, error) {
  61. var (
  62. post Post
  63. e error
  64. )
  65. e = DB.Model(&Post{}).
  66. Select("updated_at").
  67. Order("updated_at desc").
  68. Limit(1).
  69. Offset(0).
  70. First(&post).
  71. Error
  72. return post.UpdatedAt, e
  73. }