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.

97 lines
1.9 KiB

2 years ago
2 years ago
2 years ago
  1. package Database
  2. import (
  3. "git.tovijaeschke.xyz/tovi/Envelope/Backend/Models"
  4. "gorm.io/gorm"
  5. "gorm.io/gorm/clause"
  6. )
  7. func GetUserConversationById(id string) (Models.UserConversation, error) {
  8. var (
  9. message Models.UserConversation
  10. err error
  11. )
  12. err = DB.First(&message, "id = ?", id).
  13. Error
  14. return message, err
  15. }
  16. func GetUserConversationsByUserId(id string, page int) ([]Models.UserConversation, error) {
  17. var (
  18. conversations []Models.UserConversation
  19. offset int
  20. err error
  21. )
  22. offset = page * PageSize
  23. err = DB.Offset(offset).
  24. Limit(PageSize).
  25. Order("created_at DESC").
  26. Find(&conversations, "user_id = ?", id).
  27. Error
  28. return conversations, err
  29. }
  30. func CreateUserConversation(userConversation *Models.UserConversation) error {
  31. var err error
  32. err = DB.Session(&gorm.Session{FullSaveAssociations: true}).
  33. Create(userConversation).
  34. Error
  35. return err
  36. }
  37. func CreateUserConversations(userConversations *[]Models.UserConversation) error {
  38. var err error
  39. err = DB.Create(userConversations).
  40. Error
  41. return err
  42. }
  43. func UpdateUserConversation(userConversation *Models.UserConversation) error {
  44. var err error
  45. err = DB.Model(Models.UserConversation{}).
  46. Updates(userConversation).
  47. Error
  48. return err
  49. }
  50. func UpdateUserConversations(userConversations *[]Models.UserConversation) error {
  51. var err error
  52. err = DB.Model(Models.UserConversation{}).
  53. Updates(userConversations).
  54. Error
  55. return err
  56. }
  57. func UpdateOrCreateUserConversations(userConversations *[]Models.UserConversation) error {
  58. var err error
  59. err = DB.Model(Models.UserConversation{}).
  60. Clauses(clause.OnConflict{
  61. Columns: []clause.Column{{Name: "id"}},
  62. DoUpdates: clause.AssignmentColumns([]string{"admin"}),
  63. }).
  64. Create(userConversations).
  65. Error
  66. return err
  67. }
  68. func DeleteUserConversation(userConversation *Models.UserConversation) error {
  69. return DB.Session(&gorm.Session{FullSaveAssociations: true}).
  70. Delete(userConversation).
  71. Error
  72. }