/
ilgizok
/
MyLibService
Обзор
Документация
Войти
/
ilgizok
/
MyLibService
Код
Запросы
1
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
Test
src/main/java/com/example/mylib/service/BookService.java
66 строк
2 KB
ilgiz
add
20 апр 2025, 01:03
20 апр 2025, 01:03
981190d
Код
Авторство
О чём код?
package com.example.mylib.service; import com.example.mylib.dto.BookDetailsDTO; import com.example.mylib.dto.RatingDTO; import com.example.mylib.dto.ReviewDTO; import com.example.mylib.entity.Book; import com.example.mylib.repository.BookRepository; import com.example.mylib.repository.RatingRepository; import com.example.mylib.repository.ReviewRepository; import jakarta.persistence.EntityNotFoundException; import lombok.extern.slf4j.Slf4j; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; import java.util.List; import java.util.Optional; @Service public class BookService { private final BookRepository bookRepository; private final ReviewRepository reviewRepository; private final RatingRepository ratingRepository; private static final Logger log = LoggerFactory.getLogger(BookService.class); public BookService(BookRepository bookRepository, ReviewRepository reviewRepository, RatingRepository ratingRepository) { this.bookRepository = bookRepository; this.ratingRepository = ratingRepository; this.reviewRepository = reviewRepository; } @Transactional public Book saveBook(Book book) { return bookRepository.save(book); } public Optional<Book> findById(Integer id) { log.info(id.toString()); return bookRepository.findById(id); } public List<Book> searchByTitle(String title) { List<Book> books = bookRepository.findByTitleContainingIgnoreCase(title); log.info(title); return books; } @Transactional(readOnly = true) public List<Book> getBooks() { return bookRepository.findAll(); } public BookDetailsDTO getBookDetails(int bookId) { Book book = bookRepository.findById(bookId) .orElseThrow(() -> new EntityNotFoundException("Book not found with id: " + bookId)); List<ReviewDTO> reviews = reviewRepository.findReviewsByBookId(bookId); List<RatingDTO> ratings = ratingRepository.findRatingsByBookId(bookId); Double averageRating = ratingRepository.findAverageRatingByBookId(bookId); return new BookDetailsDTO(book, reviews, ratings, averageRating); } }