Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public StandardEbooksIndexer(StandardEbooksIntegration standardEbooksIntegration
@SchedulerLock(name = "StandardEbooksIndexer", lockAtLeastFor = "10m", lockAtMostFor = "30m")
public void indexEbooks() {
logger.info("Started StandardEbooks indexer");
bookService.deleteAll();
bookService.deleteAll(Provider.STANDARD_EBOOKS);
var ebooks = standardEbooksIntegration.retrieveAllEbooksFromFeed().parallelStream().map(this::convertToBook).toList();
bookService.saveBooks(ebooks);
logger.info("Finished StandardEbooks indexer. {} ebooks upserted", ebooks.size());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,6 @@ OR LOWER(b.title) LIKE LOWER(CONCAT('%', :query, '%')))
ORDER BY b.author ASC, b.title ASC
""")
List<BookOverview> searchBooks(@Param("provider") Provider provider, @Param("query") String query, Pageable pageable);

void deleteAllByProvider(Provider provider);
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,5 @@ public interface BookService {

Optional<Book> getBookById(Long id);

void deleteAll();
void deleteAll(Provider provider);
}
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public Optional<Book> getBookById(Long id) {
}

@Override
public void deleteAll() {
bookRepository.deleteAll();;
public void deleteAll(Provider provider) {
bookRepository.deleteAllByProvider(provider);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import ink.kindler.metasearch.integration.service.StandardEbooksIntegration;
import ink.kindler.metasearch.integration.service.model.StandardEbooksBook;
import ink.kindler.metasearch.persistent.entity.Provider;
import ink.kindler.metasearch.service.BookService;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
Expand Down Expand Up @@ -35,7 +36,7 @@ void shouldIndexEbooksOfStandardEbooksLibrary() {
standardEbooksIndexer.indexEbooks();

verify(bookService).saveBooks(anyList());
verify(bookService).deleteAll();
verify(bookService).deleteAll(Provider.STANDARD_EBOOKS);
}

private List<StandardEbooksBook> stubStandardEbooksBooks() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,23 @@ void shouldFindBooksByProviderAndAuthorOrTitleLike() {
assertThat(foundBooks.get(2).getAuthor()).isEqualTo("Mark Zuckerberg");
}

@Test
void shouldDeleteAllEbooksByProvider() {
var books = List.of(
stubBook( "The Adventures of Tom Sawyer", "Mark Twain", Provider.STANDARD_EBOOKS),
stubBook("Adventures of Huckleberry Finn", "Mark Twain", Provider.GUTENBERG),
stubBook("Mark Zuckerberg", "Mark Zuckerberg", Provider.STANDARD_EBOOKS)
);

bookRepository.saveAll(books);
bookRepository.deleteAllByProvider(Provider.STANDARD_EBOOKS);

var availableBooks = bookRepository.findAll();

assertThat(availableBooks).size().isEqualTo(1);
assertThat(availableBooks.getFirst().getTitle()).isEqualTo("Adventures of Huckleberry Finn");
}

private Book stubBook(String title, String author, Provider bookProvider) {
var book = new Book();
book.setTitle(title);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,9 +69,9 @@ void shouldFindBookById() {

@Test
void shouldDeleteAllBooks() {
bookService.deleteAll();
bookService.deleteAll(Provider.STANDARD_EBOOKS);

verify(bookRepository).deleteAll();
verify(bookRepository).deleteAllByProvider(Provider.STANDARD_EBOOKS);
}

}