package store import ( "context" "fmt" "git.linuxforward.com/byom/byom-core/common" "gorm.io/gorm" ) //CRUD methods for the user // CreateUser creates a new user func (s *DataStore) CreateUser(ctx context.Context, u *common.User) error { result := s.db.Create(u) if result.Error != nil { return fmt.Errorf("create user: %w", result.Error) } return nil } // GetUser gets a user by ID func (s *DataStore) GetUser(ctx context.Context, id string) (*common.User, error) { var user common.User result := s.db.First(&user, id) if result.Error != nil { return nil, fmt.Errorf("get user: %w", result.Error) } return &user, nil } // GetUserByEmail gets a user by email func (s *DataStore) GetUserByEmail(ctx context.Context, email string) (*common.User, error) { var user common.User result := s.db.Where("email = ?", email).First(&user) if result.Error != nil { if result.Error == gorm.ErrRecordNotFound { return nil, fmt.Errorf("user not found") } return nil, fmt.Errorf("get user by email: %w", result.Error) } return &user, nil } // UpdateUser updates a user func (s *DataStore) UpdateUser(ctx context.Context, u *common.User) error { result := s.db.Save(u) if result.Error != nil { return fmt.Errorf("update user: %w", result.Error) } return nil } // CreateUserTx creates a new user in a transaction func (s *DataStore) CreateUserTx(ctx context.Context, tx *gorm.DB, u *common.User) error { result := tx.Create(u) if result.Error != nil { return fmt.Errorf("create user: %w", result.Error) } return nil }