diff --git a/bookstore/src/main/java/com/fjordtek/bookstore/model/BookEventHandler.java b/bookstore/src/main/java/com/fjordtek/bookstore/model/BookEventHandler.java new file mode 100644 index 0000000..a309d68 --- /dev/null +++ b/bookstore/src/main/java/com/fjordtek/bookstore/model/BookEventHandler.java @@ -0,0 +1,38 @@ +//Pekka Helenius , Fjordtek 2020 + +package com.fjordtek.bookstore.model; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.rest.core.annotation.HandleAfterCreate; +import org.springframework.data.rest.core.annotation.RepositoryEventHandler; +import org.springframework.stereotype.Component; + +/* + * When using REST API to add a new book, we need to add a corresponding + * book hash Id to BOOK_HASH table, as well. + * + * For instance, this is a case with the following alike curl commands: + * curl --request POST --header "Content-Type: application/json" --data + * '{"title":"Bloody Chamber", ...}' http://localhost:8080/api/booklist + * + * Ref: https://docs.spring.io/spring-data/rest/docs/current/reference/html/#events + * https://stackoverflow.com/questions/49504103/override-spring-data-rest-post-method + * https://www.baeldung.com/spring-data-rest-events + */ + +@Component +@RepositoryEventHandler(Book.class) +public class BookEventHandler { + + @Autowired + private BookHashRepository bookHashRepository; + + @HandleAfterCreate + public void handleAfterCreate(Book book) { + BookHash bookHash = new BookHash(); + book.setBookHash(bookHash); + bookHash.setBook(book); + + bookHashRepository.save(bookHash); + } +} \ No newline at end of file