Search in sources :

Example 1 with Book

use of com.tvd12.example.spring_boot_redis.entity.Book in project java-examples by tvd12.

the class BookController method addBook.

@PostMapping("/book/add")
public BookResponse addBook(@RequestBody AddBookRequest request) {
    BookNameAndAuthorId bookNameAndAuthorId = new BookNameAndAuthorId(request.getBookName(), request.getAuthorId());
    Long existedBookId = bookIdByNameAndAuthorIdRepository.findById(bookNameAndAuthorId).orElse(null);
    if (existedBookId != null) {
        throw new HttpBadRequestException("author: " + request.getAuthorId() + " has already registered book: " + request.getBookName());
    }
    Author author = authorRepository.findById(request.getAuthorId()).orElseThrow(() -> new HttpBadRequestException("author: " + request.getAuthorId() + " not found"));
    Category category = categoryRepository.findById(request.getCategoryId()).orElseThrow(() -> new HttpBadRequestException("category: " + request.getCategoryId() + " not found"));
    Long bookId = idGentor.incrementAndGet("book");
    Book book = requestToEntityConverter.toBookEntity(request, bookId);
    bookRepository.save(book);
    bookIdByNameAndAuthorIdRepository.put(bookNameAndAuthorId, bookId);
    return entityToResponseConverter.toBookResponse(book, author, category);
}
Also used : Category(com.tvd12.example.spring_boot_redis.entity.Category) Book(com.tvd12.example.spring_boot_redis.entity.Book) BookNameAndAuthorId(com.tvd12.example.spring_boot_redis.entity.BookNameAndAuthorId) HttpBadRequestException(com.tvd12.example.spring_boot_redis.exception.HttpBadRequestException) Author(com.tvd12.example.spring_boot_redis.entity.Author)

Example 2 with Book

use of com.tvd12.example.spring_boot_redis.entity.Book in project ezyfox-examples by tvd12.

the class BookService method getBook.

public BookData getBook(Long bookId) {
    Book book = bookRepository.findById(bookId);
    if (book == null) {
        throw new BookNotFoundException("not found book with id: " + bookId);
    }
    final Author author = authorRepository.findById(book.getAuthorId());
    final Category category = categoryRepository.findById(book.getCategoryId());
    return entityToDataConverter.toData(book, author, category);
}
Also used : Category(com.tvd12.ezydata.example.jpa.entity.Category) Book(com.tvd12.ezydata.example.jpa.entity.Book) BookNotFoundException(com.tvd12.ezydata.example.jpa.exception.BookNotFoundException) Author(com.tvd12.ezydata.example.jpa.entity.Author)

Example 3 with Book

use of com.tvd12.example.spring_boot_redis.entity.Book in project ezyfox-examples by tvd12.

the class BookServiceTest method addBookFailedDueToBookRepository.

@Test
public void addBookFailedDueToBookRepository() {
    // given
    final AddBookData addBookData = randomAddBookData();
    final Book book = new Book(RandomUtil.randomLong(), addBookData.getCategoryId(), addBookData.getAuthorId(), addBookData.getBookName(), addBookData.getPrice(), addBookData.getReleaseDate(), addBookData.getReleaseTime(), LocalDateTime.now(), LocalDateTime.now());
    when(bookRepository.findByNameAndAuthorId(addBookData.getBookName(), addBookData.getAuthorId())).thenReturn(book);
    // when
    final Throwable throwable = assertThrows(() -> sut.addBook(addBookData));
    // then
    assertTrue(throwable instanceof DuplicatedBookException);
    verify(bookRepository, times(1)).findByNameAndAuthorId(addBookData.getBookName(), addBookData.getAuthorId());
    validateMockitoUsage();
}
Also used : DuplicatedBookException(com.tvd12.ezydata.example.jpa.exception.DuplicatedBookException) Book(com.tvd12.ezydata.example.jpa.entity.Book) AddBookData(com.tvd12.ezydata.example.jpa.data.AddBookData) Test(org.junit.jupiter.api.Test)

Example 4 with Book

use of com.tvd12.example.spring_boot_redis.entity.Book in project ezyfox-examples by tvd12.

the class BookController method getBook.

@DoGet("/books/{bookId}")
public BookResponse getBook(@PathVariable Long bookId) {
    Book book = bookRepository.findById(bookId);
    if (book == null) {
        throw new HttpNotFoundException("not found book with id: " + bookId);
    }
    Author author = authorRepository.findById(book.getAuthorId());
    Category category = categoryRepository.findById(book.getCategoryId());
    return entityToResponseConverter.toBookResponse(book, author, category);
}
Also used : HttpNotFoundException(com.tvd12.ezyhttp.core.exception.HttpNotFoundException) Category(com.tvd12.ezydata.example.mongo.entity.Category) Book(com.tvd12.ezydata.example.mongo.entity.Book) Author(com.tvd12.ezydata.example.mongo.entity.Author)

Example 5 with Book

use of com.tvd12.example.spring_boot_redis.entity.Book in project ezyfox-examples by tvd12.

the class BookController method addBook.

@DoPost("/book/add")
public BookResponse addBook(@RequestBody AddBookRequest request) {
    Book existedBook = bookRepository.findByNameAndAuthorId(request.getBookName(), request.getAuthorId());
    if (existedBook != null) {
        throw new HttpBadRequestException("author: " + request.getAuthorId() + " has already registered book: " + request.getBookName());
    }
    Author author = authorRepository.findById(request.getAuthorId());
    if (author == null) {
        throw new HttpBadRequestException("author: " + request.getAuthorId() + " not found");
    }
    Category category = categoryRepository.findById(request.getCategoryId());
    if (category == null) {
        throw new HttpBadRequestException("category: " + request.getCategoryId() + " not found");
    }
    val bookId = maxIdRepository.incrementAndGet("book");
    val book = requestToEntityConverter.toBookEntity(request, bookId);
    bookRepository.save(book);
    return entityToResponseConverter.toBookResponse(book, author, category);
}
Also used : lombok.val(lombok.val) Category(com.tvd12.ezydata.example.mongo.entity.Category) Book(com.tvd12.ezydata.example.mongo.entity.Book) HttpBadRequestException(com.tvd12.ezyhttp.core.exception.HttpBadRequestException) Author(com.tvd12.ezydata.example.mongo.entity.Author)

Aggregations

Book (com.tvd12.ezydata.example.jpa.entity.Book)6 AddBookData (com.tvd12.ezydata.example.jpa.data.AddBookData)4 Author (com.tvd12.ezydata.example.jpa.entity.Author)3 Category (com.tvd12.ezydata.example.jpa.entity.Category)3 Author (com.tvd12.example.spring_boot_redis.entity.Author)2 Book (com.tvd12.example.spring_boot_redis.entity.Book)2 Category (com.tvd12.example.spring_boot_redis.entity.Category)2 BookData (com.tvd12.ezydata.example.jpa.data.BookData)2 DuplicatedBookException (com.tvd12.ezydata.example.jpa.exception.DuplicatedBookException)2 Author (com.tvd12.ezydata.example.mongo.entity.Author)2 Book (com.tvd12.ezydata.example.mongo.entity.Book)2 Category (com.tvd12.ezydata.example.mongo.entity.Category)2 Author (com.tvd12.ezydata.example.redis.entity.Author)2 Category (com.tvd12.ezydata.example.redis.entity.Category)2 HttpBadRequestException (com.tvd12.ezyhttp.core.exception.HttpBadRequestException)2 HttpNotFoundException (com.tvd12.ezyhttp.core.exception.HttpNotFoundException)2 lombok.val (lombok.val)2 Test (org.junit.jupiter.api.Test)2 Book (com.tvd12.example.spring_boot.entity.Book)1 BookService (com.tvd12.example.spring_boot.service.BookService)1