базу при использовании 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 не делает подписку, если туда передается реактивное значение
Обсуждают сегодня