forked from Sanders/TelegaBot
refactor: Remove code duplication in BookEditingServiceImpl methods
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user