Я новичок в функциональном программировании RXjava.Я пишу конечную точку публикации с несколькими условиями:
- Когда конечная точка публикации поражается продуктами
- Если корзина для вошедшего в систему пользователя не существует в БД, то создайте новуюcart
- Если корзина уже присутствует в базе, извлеките ее, запишите и проверьте JSON продуктов, есть ли данный продукт в JSON продуктов.
- Если он недоступен в продуктахJSON должен быть создан новый продукт
- Корзина должна быть обновлена с помощью вновь созданного productId
- Если он присутствует в продуктах JSON, извлеките запись о продукте и проверьте количество.
- Если количество одинаковое, то ничего не делать
- В противном случае обновить запись.
Я сталкиваюсь с проблемой при написании этих условий в функциональном программировании.попробовал с switchifEmpty
и не смог написать код в этом.
Вот пример кода.
public Mono<Product> createProduct(final Tuple2<String, productdto> tuple2) {
final Product productdto = tuple2.getT2();
return Mono.just(tuple2.getT1())
.map(cartRepository::findById)
.defaultIfEmpty(cartRepository.save(
cart.builder()
.id(tuple2.getT1())
.build()))
.flatMap(cartres -> cartres)
.flatMap(cartres -> {
final Product product = Product.builder()
.id(1234)
.productId(productDTO.getProductId())
.productName(productDTO.getProductName())
.build();
return productRepository.save(product)
.map(saveCart -> cart.builder()
.id(cartres.getId()).build())
.flatMap(cartRepository::save);
});
}).then(Mono.just(productDto));
}