базу при использовании webflux + r2dbc
@PostMapping
public Mono<? extends BaseResponse> setUserPreference(@AuthenticationPrincipal UserDetail userDetail,
@RequestBody List<UserPreferenceRequest> request) {
return userService.getByUserDetails(userDetail)
.doOnNext(user -> request.forEach(pref -> userPreferenceService.setUserPreference(user, pref.getType(), pref.getValue())))
.map(none -> OkResponse.ok());
}
------------------
public Mono<UserPreference> setUserPreference(User user, String type, String value) {
return userPreferenceRepository.findAllByUserIdAndType(user.getId(), type)
.filter(userPreference -> type.equalsIgnoreCase(userPreference.getValue()))
.flatMap(userPreference -> {
userPreference.setValue(value);
return userPreferenceRepository.save(userPreference);
})
.switchIfEmpty(userPreferenceRepository.save(UserPreference.builder()
.user(user)
.type(type)
.value(value)
.build()));
}
doOnNext не делает подписку, если туда передается реактивное значение
Обсуждают сегодня