user.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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. return nil, fmt.Errorf("get user by email: %w", result.Error)
  32. }
  33. return &user, nil
  34. }
  35. // UpdateUser updates a user
  36. func (s *DataStore) UpdateUser(ctx context.Context, u *common.User) error {
  37. result := s.db.Save(u)
  38. if result.Error != nil {
  39. return fmt.Errorf("update user: %w", result.Error)
  40. }
  41. return nil
  42. }
  43. // CreateUserTx creates a new user in a transaction
  44. func (s *DataStore) CreateUserTx(ctx context.Context, tx *gorm.DB, u *common.User) error {
  45. result := tx.Create(u)
  46. if result.Error != nil {
  47. return fmt.Errorf("create user: %w", result.Error)
  48. }
  49. return nil
  50. }