Encrypted messaging app
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.

72 lines
1.4 KiB

  1. package Database
  2. import (
  3. "git.tovijaeschke.xyz/tovi/Envelope/Backend/Models"
  4. "gorm.io/gorm"
  5. "gorm.io/gorm/clause"
  6. )
  7. // GetMessageByID gets a message
  8. func GetMessageByID(id string) (Models.Message, error) {
  9. var (
  10. message Models.Message
  11. err error
  12. )
  13. err = DB.Preload(clause.Associations).
  14. First(&message, "id = ?", id).
  15. Error
  16. return message, err
  17. }
  18. // GetMessagesByAssociationKey for getting whole thread
  19. func GetMessagesByAssociationKey(associationKey string, page int) ([]Models.Message, error) {
  20. var (
  21. messages []Models.Message
  22. offset int
  23. err error
  24. )
  25. offset = page * PageSize
  26. err = DB.Preload("MessageData").
  27. Preload("MessageData.Attachment").
  28. Offset(offset).
  29. Limit(PageSize).
  30. Order("created_at DESC").
  31. Find(&messages, "association_key = ?", associationKey).
  32. Error
  33. return messages, err
  34. }
  35. // CreateMessage creates a message record
  36. func CreateMessage(message *Models.Message) error {
  37. var err error
  38. err = DB.Session(&gorm.Session{FullSaveAssociations: true}).
  39. Create(message).
  40. Error
  41. return err
  42. }
  43. // CreateMessages creates multiple records
  44. func CreateMessages(messages *[]Models.Message) error {
  45. var err error
  46. err = DB.Session(&gorm.Session{FullSaveAssociations: true}).
  47. Create(messages).
  48. Error
  49. return err
  50. }
  51. // DeleteMessage deletes a message
  52. func DeleteMessage(message *Models.Message) error {
  53. return DB.Session(&gorm.Session{FullSaveAssociations: true}).
  54. Delete(message).
  55. Error
  56. }