check unique phone
Test Workflow / test (push) Successful in 3s

This commit is contained in:
vladp
2025-12-16 16:43:20 +07:00
parent fade754c7c
commit 6797a47df5
4 changed files with 10 additions and 4 deletions
@@ -3,6 +3,7 @@ package ru.soune.nocopy.dto;
public enum MessageCode {
SUCCESS(0, "Operation successful"),
REG_EMAIL_EXISTS(1, "Email already registered"),
REG_EMAIL_OR_PHONE_EXISTS(1, "Email or phone already registered"),
INVALID_FIELD(2, "Invalid field"),
INVALID_JSON_BODY(2, "Invalid fields in JSON object"),
MSG_ID_NOT_FOUND(4, "Message id not found"),
@@ -42,6 +42,7 @@ public class User {
private String password;
@Size(min = 11, max = 14)
@Column(unique = true)
private String phone;
@Enumerated(EnumType.STRING)
@@ -33,13 +33,15 @@ public class RegRequestHandler implements RequestHandler {
public BaseResponse handle(BaseRequest request) throws ValidationException {
RegRequest regRequest = objectMapper.convertValue(request.getMessageBody(), RegRequest.class);
if (userRepository.existsByEmail(regRequest.getEmail())) {
if (userRepository.existsByEmail(regRequest.getEmail()) || userRepository.existsByPhone(regRequest.getPhone())) {
RegAnswer regAnswer = new RegAnswer();
regAnswer.setFieldErrors(Arrays.asList(Map.of("email", regRequest.getEmail())));
regAnswer.setFieldErrors(Arrays.asList(Map.of("phone", regRequest.getPhone())));
throw new NotValidFieldException("User already exists with email: " + regRequest.getEmail(),
new BaseResponse(request.getMsgId(), MessageCode.REG_EMAIL_EXISTS.getCode(),
MessageCode.REG_EMAIL_EXISTS.getDescription(), regAnswer));
throw new NotValidFieldException("User already exists with email:" + regRequest.getEmail() + " or phone: " +
regRequest.getPhone(), new BaseResponse(request.getMsgId(),
MessageCode.REG_EMAIL_OR_PHONE_EXISTS.getCode(),
MessageCode.REG_EMAIL_OR_PHONE_EXISTS.getDescription(), regAnswer));
}
BindingResult bindingResult = new BeanPropertyBindingResult(regRequest, "regRequest");
@@ -1,5 +1,6 @@
package ru.soune.nocopy.repository;
import jakarta.validation.constraints.Size;
import org.springframework.data.jpa.repository.JpaRepository;
import ru.soune.nocopy.entity.User;
@@ -8,4 +9,5 @@ import java.util.Optional;
public interface UserRepository extends JpaRepository<User, Long> {
Optional<User> findByEmail(String email);
boolean existsByEmail(String email);
boolean existsByPhone(@Size(min = 11, max = 14) String phone);
}