/
cherepakhin
/
SpringBoot-OpenSearch-FullTextSearch
Обзор
Документация
Войти
/
cherepakhin
/
SpringBoot-OpenSearch-FullTextSearch
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
development
src/main/java/org/opensearch/data/example/controller/BookController.java
104 строки
3 KB
Ляшенко Евгений Иванович
Create project
09 фев 2025, 01:47
09 фев 2025, 01:47
133c9db
Код
Авторство
О чём код?
package org.opensearch.data.example.controller; import jakarta.validation.Valid; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Positive; import lombok.Getter; import org.opensearch.data.example.metadata.PublicationYear; import org.opensearch.data.example.model.Book; import org.opensearch.data.example.service.BookService; import org.opensearch.data.example.service.exception.BookNotFoundException; import org.opensearch.data.example.service.exception.DuplicateIsbnException; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController @RequestMapping("/books") public class BookController { private final BookService bookService; public BookController(BookService bookService) { this.bookService = bookService; } @ResponseStatus(HttpStatus.OK) @GetMapping(value = "/find_all") public List<Book> getAllBooks() { return bookService.getAll(); } @ResponseStatus(HttpStatus.ACCEPTED) @PostMapping public Book createBook(@Valid @RequestBody BookDto book) throws DuplicateIsbnException { return bookService.create(BookDto.transform(book)); } @ResponseStatus(HttpStatus.OK) @GetMapping(value = "/{isbn}") public Book getBookByIsbn(@PathVariable String isbn) throws BookNotFoundException { return bookService.getByIsbn(isbn).orElseThrow(() -> new BookNotFoundException("The given isbn is invalid")); } @ResponseStatus(HttpStatus.OK) @GetMapping(value = "/query") public List<Book> getBooksByAuthorAndTitle(@RequestParam(value = "title") String title, @RequestParam(value = "author") String author) { return bookService.findByTitleAndAuthor(title, author); } @ResponseStatus(HttpStatus.OK) @PutMapping(value = "/{id}") public Book updateBook(@PathVariable String id, @RequestBody BookDto book) throws BookNotFoundException { return bookService.update(id, BookDto.transform(book)); } @ResponseStatus(HttpStatus.NO_CONTENT) @DeleteMapping(value = "/{id}") public void deleteBook(@PathVariable String id) { bookService.deleteById(id); } @Getter public static class BookDto { @NotBlank private String title; @Positive @PublicationYear private Integer publicationYear; @NotBlank private String authorName; @NotBlank private String isbn; static Book transform(BookDto bookDto) { Book book = new Book(); book.setTitle(bookDto.title); book.setPublicationYear(bookDto.publicationYear); book.setAuthorName(bookDto.authorName); book.setIsbn(bookDto.isbn); return book; } public void setTitle(String title) { this.title = title; } public void setPublicationYear(Integer publicationYear) { this.publicationYear = publicationYear; } public void setAuthorName(String authorName) { this.authorName = authorName; } public void setIsbn(String isbn) { this.isbn = isbn; } } }