add validation to email for save user
This commit is contained in:
parent
20e7421603
commit
619ece9a13
3 changed files with 31 additions and 2 deletions
|
|
@ -1,5 +1,6 @@
|
||||||
package br.com.rayankonecny.userserviceapi.controller.exceptions;
|
package br.com.rayankonecny.userserviceapi.controller.exceptions;
|
||||||
|
|
||||||
|
import org.springframework.dao.DataIntegrityViolationException;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.validation.FieldError;
|
import org.springframework.validation.FieldError;
|
||||||
import org.springframework.web.bind.MethodArgumentNotValidException;
|
import org.springframework.web.bind.MethodArgumentNotValidException;
|
||||||
|
|
@ -13,6 +14,7 @@ import main.java.models.exceptions.ResourceNotFoundException;
|
||||||
import main.java.models.exceptions.StandardError;
|
import main.java.models.exceptions.StandardError;
|
||||||
|
|
||||||
import static java.time.LocalDateTime.now;
|
import static java.time.LocalDateTime.now;
|
||||||
|
import static org.springframework.http.HttpStatus.BAD_REQUEST;
|
||||||
import static org.springframework.http.HttpStatus.NOT_FOUND;
|
import static org.springframework.http.HttpStatus.NOT_FOUND;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
@ -54,4 +56,18 @@ public class ControllerExceptionHandler {
|
||||||
|
|
||||||
return ResponseEntity.badRequest().body(error);
|
return ResponseEntity.badRequest().body(error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ExceptionHandler(DataIntegrityViolationException.class)
|
||||||
|
ResponseEntity<StandardError> handleDataIntegrityViolationException(
|
||||||
|
final DataIntegrityViolationException ex, final HttpServletRequest request) {
|
||||||
|
|
||||||
|
return ResponseEntity.badRequest().body(
|
||||||
|
StandardError.builder()
|
||||||
|
.timestamp(now())
|
||||||
|
.status(BAD_REQUEST.value())
|
||||||
|
.error(BAD_REQUEST.getReasonPhrase())
|
||||||
|
.message(ex.getMessage())
|
||||||
|
.path(request.getRequestURI())
|
||||||
|
.build());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,13 @@
|
||||||
package br.com.rayankonecny.userserviceapi.repository;
|
package br.com.rayankonecny.userserviceapi.repository;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
import br.com.rayankonecny.userserviceapi.entity.User;
|
||||||
import org.springframework.data.mongodb.repository.MongoRepository;
|
import org.springframework.data.mongodb.repository.MongoRepository;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
import br.com.rayankonecny.userserviceapi.entity.User;
|
|
||||||
|
|
||||||
@Repository
|
@Repository
|
||||||
public interface UserRepository extends MongoRepository<User, String> {
|
public interface UserRepository extends MongoRepository<User, String> {
|
||||||
|
|
||||||
|
Optional<User> findByEmail(final String email);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package br.com.rayankonecny.userserviceapi.service;
|
package br.com.rayankonecny.userserviceapi.service;
|
||||||
|
|
||||||
|
import org.springframework.dao.DataIntegrityViolationException;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import br.com.rayankonecny.userserviceapi.mapper.UserMapper;
|
import br.com.rayankonecny.userserviceapi.mapper.UserMapper;
|
||||||
|
|
@ -23,7 +24,16 @@ public class UserService {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void save(CreateUserRequest createUserRequest) {
|
public void save(CreateUserRequest createUserRequest) {
|
||||||
|
verifyIfEmailAlreadyEexists(createUserRequest.email(), null);
|
||||||
userRepository.save(userMapper.fromRequest(createUserRequest));
|
userRepository.save(userMapper.fromRequest(createUserRequest));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void verifyIfEmailAlreadyEexists(final String email, final String id) {
|
||||||
|
userRepository.findByEmail(email)
|
||||||
|
.filter(user -> !user.getId().equals(id))
|
||||||
|
.ifPresent(user -> {
|
||||||
|
throw new DataIntegrityViolationException("Email [" + email + "] already exists");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue