refactor: Remove code duplication in BookEditingServiceImpl methods

This commit is contained in:
2025-02-08 23:28:17 +03:00
parent 2ebf525cea
commit e97f4eb92c
@@ -69,41 +69,43 @@ public class BookEditingServiceImpl implements BookEditingService {
telegramClientService.sendMessage(user, "Введите рейтинг:");
}
public void updateBookTitle(BotUser user, String newTitle) {
private void updateBookField(BotUser user, String newValue, String fieldName) {
var bookEditState = bookCacheService.getBookEditCache(user.getId());
Book book = bookRepository.findById(bookEditState.getBookId()).orElseThrow();
book.setTitle(newTitle);
bookRepository.save(book);
switch (fieldName) {
case "title":
book.setTitle(newValue);
telegramClientService.sendMessage(user, "Название успешно обновлено!");
break;
case "author":
book.setAuthor(newValue);
telegramClientService.sendMessage(user, "Автор успешно обновлен");
break;
case "rating":
book.setRating(Integer.parseInt(newValue));
telegramClientService.sendMessage(user, "Рейтинг успешно обновлен");
break;
default:
throw new IllegalArgumentException("Invalid field name: " + fieldName);
}
bookRepository.save(book);
bookEditState.setBookEditState(BookEditStateCache.BookEditState.NONE);
bookCacheService.updateBookEditCache(user.getId(), bookEditState);
telegramClientService.sendMessage(user, "Название успешно обновлено!");
handleRestartMessage(user);
}
public void updateBookTitle(BotUser user, String newTitle) {
updateBookField(user, newTitle, "title");
}
public void updateBookAuthor(BotUser user, String newAuthor) {
var bookEditState = bookCacheService.getBookEditCache(user.getId());
Book book = bookRepository.findById(bookEditState.getBookId()).orElseThrow();
book.setAuthor(newAuthor);
bookRepository.save(book);
bookEditState.setBookEditState(BookEditStateCache.BookEditState.NONE);
bookCacheService.updateBookEditCache(user.getId(), bookEditState);
telegramClientService.sendMessage(user, "Автор успешно обновлен");
handleRestartMessage(user);
updateBookField(user, newAuthor, "author");
}
public void updateBookRating(BotUser user, String newRating) {
var bookEditState = bookCacheService.getBookEditCache(user.getId());
Book book = bookRepository.findById(bookEditState.getBookId()).orElseThrow();
book.setRating(Integer.parseInt(newRating));
bookRepository.save(book);
bookEditState.setBookEditState(BookEditStateCache.BookEditState.NONE);
bookCacheService.updateBookEditCache(user.getId(), bookEditState);
telegramClientService.sendMessage(user, "Рейтинг успешно обновлен");
handleRestartMessage(user);
updateBookField(user, newRating, "rating");
}
@Override