package com.nisum.poc.springwebfluxdemo.service; import com.nisum.poc.springwebfluxdemo.entity.Book; import com.nisum.poc.springwebfluxdemo.repositories.BookRepo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; @Service public class BookServiceImpl implements BookService { @Autowired private BookRepo bookRepo; @Override public Mono<Book> create(Book book) { return bookRepo.save(book); } @Override public Flux<Book> getAllBooks() { return bookRepo.findAll(); } @Override public Mono<Book> getBook(Integer bookId) { // return bookRepo.findById(bookId); return bookRepo.findById(Mono.just(bookId)); } @Override public Mono<Book> updateBook(Book book, Integer bookId) { Mono<Book> oldBook = bookRepo.findById(bookId); return oldBook.flatMap(book1 -> { book1.setName(book.getName()); book1.setAuthor(book.getAuthor()); book1.setDesc(book.getDesc()); book1.setPubliser(book.getPubliser()); return bookRepo.save(book1); }); } @Override public Mono<Void> deleteBook(Integer bookId) { return bookRepo.findById(bookId).flatMap(book -> bookRepo.delete(book)); } }