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.

99 lines
1.5 KiB

  1. package Database
  2. import (
  3. "errors"
  4. "git.tovijaeschke.xyz/tovi/Envelope/Backend/Models"
  5. "gorm.io/gorm"
  6. "gorm.io/gorm/clause"
  7. )
  8. func GetUserById(id string) (Models.User, error) {
  9. var (
  10. userData Models.User
  11. err error
  12. )
  13. err = DB.Preload(clause.Associations).
  14. First(&userData, "id = ?", id).
  15. Error
  16. return userData, err
  17. }
  18. func GetUserByUsername(username string) (Models.User, error) {
  19. var (
  20. userData Models.User
  21. err error
  22. )
  23. err = DB.Preload(clause.Associations).
  24. First(&userData, "username = ?", username).
  25. Error
  26. return userData, err
  27. }
  28. func CheckUniqueUsername(username string) error {
  29. var (
  30. exists bool
  31. err error
  32. )
  33. err = DB.Model(Models.User{}).
  34. Select("count(*) > 0").
  35. Where("username = ?", username).
  36. Find(&exists).
  37. Error
  38. if err != nil {
  39. return err
  40. }
  41. if exists {
  42. return errors.New("Invalid username")
  43. }
  44. return nil
  45. }
  46. func CreateUser(userData *Models.User) error {
  47. var (
  48. err error
  49. )
  50. err = DB.Session(&gorm.Session{FullSaveAssociations: true}).
  51. Create(userData).
  52. Error
  53. return err
  54. }
  55. func UpdateUser(id string, userData *Models.User) error {
  56. var (
  57. err error
  58. )
  59. err = DB.Model(&userData).
  60. Omit("id").
  61. Where("id = ?", id).
  62. Updates(userData).
  63. Error
  64. if err != nil {
  65. return err
  66. }
  67. err = DB.Model(Models.User{}).
  68. Where("id = ?", id).
  69. First(userData).
  70. Error
  71. return err
  72. }
  73. func DeleteUser(userData *Models.User) error {
  74. return DB.Session(&gorm.Session{FullSaveAssociations: true}).
  75. Delete(userData).
  76. Error
  77. }