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.

95 lines
1.4 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. user Models.User
  11. err error
  12. )
  13. err = DB.Preload(clause.Associations).
  14. First(&user, "id = ?", id).
  15. Error
  16. return user, err
  17. }
  18. func GetUserByUsername(username string) (Models.User, error) {
  19. var (
  20. user Models.User
  21. err error
  22. )
  23. err = DB.Preload(clause.Associations).
  24. First(&user, "username = ?", username).
  25. Error
  26. return user, 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(user *Models.User) error {
  47. var err error
  48. err = DB.Session(&gorm.Session{FullSaveAssociations: true}).
  49. Create(user).
  50. Error
  51. return err
  52. }
  53. func UpdateUser(id string, user *Models.User) error {
  54. var err error
  55. err = DB.Model(&user).
  56. Omit("id").
  57. Where("id = ?", id).
  58. Updates(user).
  59. Error
  60. if err != nil {
  61. return err
  62. }
  63. err = DB.Model(Models.User{}).
  64. Where("id = ?", id).
  65. First(user).
  66. Error
  67. return err
  68. }
  69. func DeleteUser(user *Models.User) error {
  70. return DB.Session(&gorm.Session{FullSaveAssociations: true}).
  71. Delete(user).
  72. Error
  73. }