подскажите, как работать с условиями в Reactive.
У меня есть простой метод DTO SignInRequest и signIn .
public class SignInRequest {
private String userName;
private String password;
}
public Mono<SignInResponse> signIn(SignInRequest signInRequest) {
boolean isValid = StringUtils.isEmailValid(signInRequest.getUserName());
return userService.findByEmail(signInRequest.getUserName())
.switchIfEmpty(Mono.error(new NotFoundException("User not found [email: " + signInRequest.getEmail() + "]")))
.filter(user -> passwordService.validatePassword(user.getPassword(), signInRequest.getPassword()))
.switchIfEmpty(Mono.error(new BadRequestException("Wrong email or password")))
.flatMap(this::generateTokens);
}
Как правильно реализовать следующую логику c.
Если isValid == true
, то вызвать метод findByEmail . В противном случае вызовите findByUsername