user.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package store
  2. import (
  3. "context"
  4. "fmt"
  5. "git.linuxforward.com/byom/byom-core/common"
  6. "gorm.io/gorm"
  7. )
  8. //CRUD methods for the user
  9. // CreateUser creates a new user
  10. func (s *DataStore) CreateUser(ctx context.Context, u *common.User) error {
  11. result := s.db.Create(u)
  12. if result.Error != nil {
  13. return fmt.Errorf("create user: %w", result.Error)
  14. }
  15. return nil
  16. }
  17. // GetUser gets a user by ID
  18. func (s *DataStore) GetUser(ctx context.Context, id string) (*common.User, error) {
  19. var user common.User
  20. result := s.db.First(&user, id)
  21. if result.Error != nil {
  22. return nil, fmt.Errorf("get user: %w", result.Error)
  23. }
  24. return &user, nil
  25. }
  26. // GetUserByEmail gets a user by email
  27. func (s *DataStore) GetUserByEmail(ctx context.Context, email string) (*common.User, error) {
  28. var user common.User
  29. result := s.db.Where("email = ?", email).First(&user)
  30. if result.Error != nil {
  31. if result.Error == gorm.ErrRecordNotFound {
  32. return nil, fmt.Errorf("user not found")
  33. }
  34. return nil, fmt.Errorf("get user by email: %w", result.Error)
  35. }
  36. return &user, nil
  37. }
  38. // UpdateUser updates a user
  39. func (s *DataStore) UpdateUser(ctx context.Context, u *common.User) error {
  40. result := s.db.Save(u)
  41. if result.Error != nil {
  42. return fmt.Errorf("update user: %w", result.Error)
  43. }
  44. return nil
  45. }
  46. // CreateUserTx creates a new user in a transaction
  47. func (s *DataStore) CreateUserTx(ctx context.Context, tx *gorm.DB, u *common.User) error {
  48. result := tx.Create(u)
  49. if result.Error != nil {
  50. return fmt.Errorf("create user: %w", result.Error)
  51. }
  52. return nil
  53. }