diff --git a/cmd/user_test.go b/cmd/user_test.go new file mode 100644 index 0000000..b1bd40c --- /dev/null +++ b/cmd/user_test.go @@ -0,0 +1,7 @@ +package main + +import "testing" + +func TestRegister(t *testing.T) { + +} diff --git a/internal/app/ports/user_ports.go b/internal/app/ports/user_ports.go index a68f356..caa47c4 100644 --- a/internal/app/ports/user_ports.go +++ b/internal/app/ports/user_ports.go @@ -10,7 +10,7 @@ import ( type IUserRepository interface { GetUserByUsernameAndPassword(ctx context.Context, username string, hashPassword string) (*entity.UserORM, error) RegisterUser(ctx context.Context, userData entity.UserORM) (int64, error) - GetUserByEmail(ctx context.Context, email string) error + GetUserByEmail(ctx context.Context, email string) (entity.UserORM, error) } type IUserService interface { diff --git a/internal/app/repository/user_repository.go b/internal/app/repository/user_repository.go index 869cab8..3348fbd 100644 --- a/internal/app/repository/user_repository.go +++ b/internal/app/repository/user_repository.go @@ -56,7 +56,7 @@ func (r *UserRepository) RegisterUser(ctx context.Context, userData entity.UserO return lastId, nil } -func (r *UserRepository) GetUserByEmail(ctx context.Context, email string) error { +func (r *UserRepository) GetUserByEmail(ctx context.Context, email string) (entity.UserORM, error) { span, ctx := opentracing.StartSpanFromContext(ctx, "repo.UserRepository.GetUserByEmail") defer span.Finish() @@ -65,8 +65,8 @@ func (r *UserRepository) GetUserByEmail(ctx context.Context, email string) error err := r.MasterDB.GetContext(ctx, &user, queryGetEmailSame, email) if err != nil { if err == sql.ErrNoRows { - return nil + return user, nil } } - return errors.New("Email Already Exists") + return user, errors.New("Email Already Exists") } diff --git a/internal/app/service/user_service.go b/internal/app/service/user_service.go index 5f575e7..b479f10 100644 --- a/internal/app/service/user_service.go +++ b/internal/app/service/user_service.go @@ -74,9 +74,12 @@ func (s *UserService) Register(ctx context.Context, userData entity.User) (int64 span, ctx := opentracing.StartSpanFromContext(ctx, "service.UserService.Register") defer span.Finish() - err := s.userRepository.GetUserByEmail(ctx, userData.Email) + returnUsers, err := s.userRepository.GetUserByEmail(ctx, userData.Email) if err != nil { - return 0, errors.New("Email Already Exists") + return 0, err + } + if returnUsers.Username != "" { + return 0, errors.New("Email Already Exist") } passwordHashed, err := utils.HashPassword(userData.Password) if err != nil {