Я пытаюсь использовать реактивный REST-сервис с использованием весенней загрузки. Я настроил код, и он работает, чтобы сохранить элемент в базе данных Cassandara. Теперь у меня есть следующие требования, чтобы написать реактивным способом:
Если элемент не найден в базе данных, сохраните элемент. Если Предмет присутствует, бросить исключение.
Я пытался выяснить, как реагирует такая логика. Так как я новичок в этой области, понять концепцию сложно. Вот мой подход:
@Override
public Mono<String> createItem(ItemCreateParam itemCreateParam) {
//This check if item exits in database.
Mono<Boolean> byName = reactiveItemRepository.existsById(itemCreateParam.getName());
//This save the item and return the id (i.e name)
return Mono.just(itemCreateParam)
.flatMap(item -> convert(item))
.log()
.flatMap(t -> reactiveTemplateRepository.save(t))
.map(t-> t.getName());
}
Как скомбинировать эти два ответа?