From 3a9239b77e910c053910cd9169acd508a349ce5e Mon Sep 17 00:00:00 2001 From: maxnes3 <112558334+maxnes3@users.noreply.github.com> Date: Fri, 12 May 2023 19:23:50 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D1=87=D1=82=D0=B8=20=D0=B2=D1=81?= =?UTF-8?q?=D1=91,=20=D1=83=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bookshop/controller/AuthorController.java | 5 + .../bookshop/controller/BookController.java | 5 + .../bookshop/service/AuthorService.java | 5 + .../bookshop/service/BookService.java | 6 + .../spa-vue/src/components/Footer.vue | 2 +- .../spa-vue/src/components/Header.vue | 14 +- .../frontend/spa-vue/src/models/Author.js | 8 + .../frontend/spa-vue/src/models/Book.js | 8 + .../frontend/spa-vue/src/models/Genre.js | 6 + .../frontend/spa-vue/src/pages/Authors.vue | 245 ++++++++++++++++++ .../frontend/spa-vue/src/pages/Books.vue | 239 +++++++++++++++++ .../frontend/spa-vue/src/pages/Genres.vue | 127 +++++++++ .../frontend/spa-vue/src/router/router.js | 6 + 13 files changed, 673 insertions(+), 3 deletions(-) create mode 100644 src/main/resources/frontend/spa-vue/src/models/Author.js create mode 100644 src/main/resources/frontend/spa-vue/src/models/Book.js create mode 100644 src/main/resources/frontend/spa-vue/src/models/Genre.js create mode 100644 src/main/resources/frontend/spa-vue/src/pages/Authors.vue create mode 100644 src/main/resources/frontend/spa-vue/src/pages/Books.vue create mode 100644 src/main/resources/frontend/spa-vue/src/pages/Genres.vue diff --git a/src/main/java/ru/ip/labworks/labworks/bookshop/controller/AuthorController.java b/src/main/java/ru/ip/labworks/labworks/bookshop/controller/AuthorController.java index 018ff80..269f188 100644 --- a/src/main/java/ru/ip/labworks/labworks/bookshop/controller/AuthorController.java +++ b/src/main/java/ru/ip/labworks/labworks/bookshop/controller/AuthorController.java @@ -26,6 +26,11 @@ public class AuthorController { return authorService.findAllAuthors().stream().map(AuthorDto::new).toList(); } + @GetMapping("/{id}/books") + public List getAuthorBooks(@PathVariable Long id){ + return authorService.authorBooks(id).stream().map(BookDto::new).toList(); + } + @PostMapping public AuthorDto createAuthor(@RequestBody @Valid AuthorDto authorDto) throws IOException { return new AuthorDto(authorService.addAuthor(authorDto)); diff --git a/src/main/java/ru/ip/labworks/labworks/bookshop/controller/BookController.java b/src/main/java/ru/ip/labworks/labworks/bookshop/controller/BookController.java index 51c69c2..10ed1c3 100644 --- a/src/main/java/ru/ip/labworks/labworks/bookshop/controller/BookController.java +++ b/src/main/java/ru/ip/labworks/labworks/bookshop/controller/BookController.java @@ -26,6 +26,11 @@ public class BookController { return bookService.findAllBooks().stream().map(BookDto::new).toList(); } + @GetMapping("/{id}/genres") + public List getBookGenres(@PathVariable Long id){ + return bookService.bookGenres(id).stream().map(GenreDto::new).toList(); + } + @PostMapping public BookDto createBook(@RequestBody @Valid BookDto bookDto) throws IOException { return new BookDto(bookService.addBook(bookDto)); diff --git a/src/main/java/ru/ip/labworks/labworks/bookshop/service/AuthorService.java b/src/main/java/ru/ip/labworks/labworks/bookshop/service/AuthorService.java index d9c3722..fcffae2 100644 --- a/src/main/java/ru/ip/labworks/labworks/bookshop/service/AuthorService.java +++ b/src/main/java/ru/ip/labworks/labworks/bookshop/service/AuthorService.java @@ -66,6 +66,11 @@ public class AuthorService { return authorRepository.findAll(); } + @Transactional(readOnly = true) + public List authorBooks(Long id){ + return authorRepository.findById(id).get().getBooks(); + } + @Transactional public Author updateAuthor(Long id, String firstname, String lastname, File photo){ if (!StringUtils.hasText(firstname) || !StringUtils.hasText(lastname)) { diff --git a/src/main/java/ru/ip/labworks/labworks/bookshop/service/BookService.java b/src/main/java/ru/ip/labworks/labworks/bookshop/service/BookService.java index 6b66fc5..9a0d5e9 100644 --- a/src/main/java/ru/ip/labworks/labworks/bookshop/service/BookService.java +++ b/src/main/java/ru/ip/labworks/labworks/bookshop/service/BookService.java @@ -6,6 +6,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; import ru.ip.labworks.labworks.bookshop.controller.BookDto; import ru.ip.labworks.labworks.bookshop.model.Book; +import ru.ip.labworks.labworks.bookshop.model.Genre; import ru.ip.labworks.labworks.bookshop.repository.BookRepository; import ru.ip.labworks.labworks.bookshop.repository.GenreRepository; import ru.ip.labworks.labworks.util.validation.ValidatorUtil; @@ -70,6 +71,11 @@ public class BookService { return bookRepository.findAll(); } + @Transactional(readOnly = true) + public List bookGenres(Long id){ + return bookRepository.findById(id).get().getGenres(); + } + @Transactional public Book updateBook(Long id, String name, String release, File cover) { if (!StringUtils.hasText(name) || !StringUtils.hasText(release)) { diff --git a/src/main/resources/frontend/spa-vue/src/components/Footer.vue b/src/main/resources/frontend/spa-vue/src/components/Footer.vue index 990a5bd..686f94d 100644 --- a/src/main/resources/frontend/spa-vue/src/components/Footer.vue +++ b/src/main/resources/frontend/spa-vue/src/components/Footer.vue @@ -1,5 +1,5 @@