message.go 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package model
  2. import (
  3. "errors"
  4. "message-pusher/common"
  5. "time"
  6. )
  7. type Message struct {
  8. Id int `json:"id"`
  9. UserId int `json:"user_id" gorm:"index"`
  10. Title string `json:"title"`
  11. Description string `json:"description"`
  12. Desp string `json:"desp" gorm:"-:all"` // alias for description
  13. Content string `json:"content"`
  14. URL string `json:"url" gorm:"-:all"`
  15. Channel string `json:"channel"`
  16. Token string `json:"token" gorm:"-:all"`
  17. HTMLContent string `json:"html_content" gorm:"-:all"`
  18. Timestamp int64 `json:"timestamp" gorm:"type:int64"`
  19. Link string `json:"link" gorm:"unique;index"`
  20. }
  21. func GetMessageById(id int, userId int) (*Message, error) {
  22. if id == 0 || userId == 0 {
  23. return nil, errors.New("id 或 userId 为空!")
  24. }
  25. message := Message{Id: id, UserId: userId}
  26. err := DB.Where(message).First(&message).Error
  27. return &message, err
  28. }
  29. func GetMessageByLink(link string) (*Message, error) {
  30. if link == "" {
  31. return nil, errors.New("link 为空!")
  32. }
  33. message := Message{Link: link}
  34. err := DB.Where(message).First(&message).Error
  35. return &message, err
  36. }
  37. func GetMessagesByUserId(userId int, startIdx int, num int) (messages []*Message, err error) {
  38. err = DB.Where("user_id = ?", userId).Order("id desc").Limit(num).Offset(startIdx).Find(&messages).Error
  39. return messages, err
  40. }
  41. func DeleteMessageById(id int, userId int) (err error) {
  42. // Why we need userId here? In case user want to delete other's message.
  43. if id == 0 || userId == 0 {
  44. return errors.New("id 或 userId 为空!")
  45. }
  46. message := Message{Id: id, UserId: userId}
  47. err = DB.Where(message).First(&message).Error
  48. if err != nil {
  49. return err
  50. }
  51. return message.Delete()
  52. }
  53. func DeleteAllMessages() error {
  54. return DB.Exec("DELETE FROM messages").Error
  55. }
  56. func (message *Message) UpdateAndInsert(userId int) error {
  57. message.Link = common.GetUUID()
  58. message.Timestamp = time.Now().Unix()
  59. message.UserId = userId
  60. var err error
  61. err = DB.Create(message).Error
  62. return err
  63. }
  64. func (message *Message) Delete() error {
  65. err := DB.Delete(message).Error
  66. return err
  67. }