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.

75 lines
3.2 KiB

  1. package Database
  2. import (
  3. "github.com/gofrs/uuid"
  4. "gorm.io/gorm"
  5. "gorm.io/gorm/clause"
  6. )
  7. // ConversationDetail stores the name for the conversation
  8. type ConversationDetail struct {
  9. Base
  10. Name string `gorm:"not null" json:"name"` // Stored encrypted
  11. Users []ConversationDetailUser ` json:"users"`
  12. TwoUser string `gorm:"not null" json:"two_user"`
  13. AttachmentID *uuid.UUID ` json:"attachment_id"`
  14. Attachment Attachment ` json:"attachment"`
  15. MessageExpiryDefault MessageExpiry `gorm:"default:no_expiry" json:"-" sql:"type:ENUM('fifteen_min', 'thirty_min', 'one_hour', 'three_hour', 'six_hour', 'twelve_hour', 'one_day', 'three_day', 'no_expiry')"` // Stored encrypted
  16. MessageExpiry string `gorm:"-" json:"message_expiry"` // Stored encrypted
  17. AdminAddMembers string ` json:"admin_add_members"` // Stored encrypted
  18. AdminEditInfo string ` json:"admin_edit_info"` // Stored encrypted
  19. AdminSendMessages string ` json:"admin_send_messages"` // Stored encrypted
  20. }
  21. // GetConversationDetailByID gets by id
  22. func GetConversationDetailByID(id string) (ConversationDetail, error) {
  23. var (
  24. conversationDetail ConversationDetail
  25. err error
  26. )
  27. err = DB.Preload(clause.Associations).
  28. Where("id = ?", id).
  29. First(&conversationDetail).
  30. Error
  31. return conversationDetail, err
  32. }
  33. // GetConversationDetailsByIds gets by multiple ids
  34. func GetConversationDetailsByIds(id []string) ([]ConversationDetail, error) {
  35. var (
  36. conversationDetail []ConversationDetail
  37. err error
  38. )
  39. err = DB.Preload(clause.Associations).
  40. Where("id IN ?", id).
  41. Find(&conversationDetail).
  42. Error
  43. return conversationDetail, err
  44. }
  45. // CreateConversationDetail creates a ConversationDetail record
  46. func (conversationDetail *ConversationDetail) CreateConversationDetail() error {
  47. return DB.Session(&gorm.Session{FullSaveAssociations: true}).
  48. Create(conversationDetail).
  49. Error
  50. }
  51. // UpdateConversationDetail updates a ConversationDetail record
  52. func (conversationDetail *ConversationDetail) UpdateConversationDetail() error {
  53. return DB.Session(&gorm.Session{FullSaveAssociations: true}).
  54. Where("id = ?", conversationDetail.ID).
  55. Updates(conversationDetail).
  56. Error
  57. }
  58. // DeleteConversationDetail deletes a ConversationDetail record
  59. func (conversationDetail *ConversationDetail) DeleteConversationDetail() error {
  60. return DB.Session(&gorm.Session{FullSaveAssociations: true}).
  61. Delete(conversationDetail).
  62. Error
  63. }