From 9df801e9ac801f58787db53474ee8dd14d9b19ba Mon Sep 17 00:00:00 2001 From: MiteZ Date: Tue, 11 Jun 2024 22:17:30 +0700 Subject: [PATCH] Resolving Issues And Split Email Checker --- internal/app/ports/user_ports.go | 1 + internal/app/repository/init.go | 2 +- internal/app/repository/user_repository.go | 37 +++++++---------- internal/app/service/user_service.go | 47 ++++++++++++---------- 4 files changed, 43 insertions(+), 44 deletions(-) diff --git a/internal/app/ports/user_ports.go b/internal/app/ports/user_ports.go index 64e9f7c..a68f356 100644 --- a/internal/app/ports/user_ports.go +++ b/internal/app/ports/user_ports.go @@ -10,6 +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 } type IUserService interface { diff --git a/internal/app/repository/init.go b/internal/app/repository/init.go index 63219f6..b2685d7 100644 --- a/internal/app/repository/init.go +++ b/internal/app/repository/init.go @@ -1,7 +1,7 @@ package repository import ( - "github.com/voltgizerz/POS-restaurant/database" + "github.com/voltgizerz/POS-restaurant/database" ) type RepositoryOpts struct { diff --git a/internal/app/repository/user_repository.go b/internal/app/repository/user_repository.go index e8b3f70..e8dec76 100644 --- a/internal/app/repository/user_repository.go +++ b/internal/app/repository/user_repository.go @@ -2,14 +2,12 @@ package repository import ( "context" - "errors" + "database/sql" "github.com/jmoiron/sqlx" "github.com/opentracing/opentracing-go" - "github.com/sirupsen/logrus" "github.com/voltgizerz/POS-restaurant/internal/app/entity" "github.com/voltgizerz/POS-restaurant/internal/app/ports" - "github.com/voltgizerz/POS-restaurant/pkg/logger" ) const ( @@ -46,33 +44,28 @@ func (r *UserRepository) RegisterUser(ctx context.Context, userData entity.UserO span, ctx := opentracing.StartSpanFromContext(ctx, "repo.UserRepository.RegisterUser") defer span.Finish() - user := entity.UserORM{} - - err := r.MasterDB.Get(&user, queryGetEmailSame, userData.Email) - if err == nil { - logger.LogStdErr.WithFields(logrus.Fields{ - "username": userData.Username, - "error": "Email Already Exist", - }).Error("[UserRepository(RegisterUser)] Email Already Exist") - return 0, errors.New("Email Already Exists") - } result, err := r.MasterDB.ExecContext(ctx, queryInsertDataUser, userData.Name, userData.Username, userData.Email, userData.Password, 1, 1) if err != nil { - logger.LogStdErr.WithFields(logrus.Fields{ - "username": userData.Username, - "error": err, - }).Error("[UserRepository(RegisterUser)] " + err.Error()) return 0, err - } lastId, err := result.LastInsertId() if err != nil { - logger.LogStdErr.WithFields(logrus.Fields{ - "username": userData.Username, - "error": err, - }).Error("[UserRepository(RegisterUser)] " + err.Error()) return 0, err } return lastId, nil +} +func (r *UserRepository) GetUserByEmail(ctx context.Context, email string) error { + span, ctx := opentracing.StartSpanFromContext(ctx, "repo.UserRepository.GetUserByEmail") + defer span.Finish() + + user := entity.UserORM{} + + err := r.MasterDB.GetContext(ctx, &user, queryGetEmailSame, email) + if err != nil { + if err == sql.ErrNoRows { + return err + } + } + return nil } diff --git a/internal/app/service/user_service.go b/internal/app/service/user_service.go index 3e8c70e..8f7e1fd 100644 --- a/internal/app/service/user_service.go +++ b/internal/app/service/user_service.go @@ -2,6 +2,7 @@ package service import ( "context" + "errors" "github.com/opentracing/opentracing-go" "github.com/sirupsen/logrus" @@ -73,28 +74,32 @@ func (s *UserService) Register(ctx context.Context, userData entity.User) (int64 span, ctx := opentracing.StartSpanFromContext(ctx, "service.UserService.Register") defer span.Finish() - passwordhasing, err := utils.HashPassword(userData.Password) + err := s.userRepository.GetUserByEmail(ctx, userData.Email) if err != nil { - logger.LogStdErr.WithFields(logrus.Fields{ - "username": userData.Username, - "error": err, - }).Error("[UserService] error on UserService Hash Password On Register") - } - userDataProced := entity.UserORM{ - Username: userData.Username, - Password: passwordhasing, - Name: userData.Name, - Email: userData.Email, - } - - result, err := s.userRepository.RegisterUser(ctx, userDataProced) - if err != nil { - logger.LogStdErr.WithFields(logrus.Fields{ - "username": userData.Username, - "error": err, - }).Error("[UserService] error on UserService From Repository Register User") - return 0, err + passwordHashed, err := utils.HashPassword(userData.Password) + if err != nil { + logger.LogStdErr.WithFields(logrus.Fields{ + "username": userData.Username, + "error": err, + }).Error("[UserService] error on UserService Hash Password On Register") + } + userDataProced := entity.UserORM{ + Username: userData.Username, + Password: passwordHashed, + Name: userData.Name, + Email: userData.Email, + } + + result, err := s.userRepository.RegisterUser(ctx, userDataProced) + if err != nil { + logger.LogStdErr.WithFields(logrus.Fields{ + "username": userData.Username, + "error": err, + }).Error("[UserService] error on UserService From Repository Register User") + return 0, err + } + return result, nil } + return 0, errors.New("Email Already Exists") - return result, nil }