diff --git a/build.gradle b/build.gradle index d6cf871..7fc7020 100644 --- a/build.gradle +++ b/build.gradle @@ -32,4 +32,4 @@ dependencies { tasks.named('test') { useJUnitPlatform() -} +} \ No newline at end of file diff --git a/src/main/java/com/getdata/restcall_test1/Controller/AuthorController.java b/src/main/java/com/getdata/restcall_test1/Controller/AuthorController.java index 5b3725c..8595cc5 100644 --- a/src/main/java/com/getdata/restcall_test1/Controller/AuthorController.java +++ b/src/main/java/com/getdata/restcall_test1/Controller/AuthorController.java @@ -1,12 +1,14 @@ package com.getdata.restcall_test1.Controller; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; import com.getdata.restcall_test1.Service.AuthorService; import com.getdata.restcall_test1.Entity.Author; +import com.getdata.restcall_test1.Entity.Books; +import java.util.List; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; @RestController public class AuthorController { @@ -21,4 +23,21 @@ public AuthorController(AuthorService authorService) { public Author getDetails(@PathVariable String AuthorID){ return authorService.getAuthorsByID(AuthorID); } -} \ No newline at end of file + @GetMapping("/getAuthorBooks/{AuthorID}") + public ResponseEntity> getBooksByAuthor(@PathVariable String AuthorID){ + List books = authorService.getBooksByAuthorID(AuthorID); + if (books != null && !books.isEmpty()) { + return ResponseEntity.ok(books); + } else { + return ResponseEntity.notFound().build(); + } + } + @PostMapping("/createAuthor") + public ResponseEntity createAuthor(@RequestBody Author author) { + authorService.createAuthor(author); + return new ResponseEntity<>(HttpStatus.CREATED); + } +} + +//http://localhost:8080/getAuthor/B0000000 +//http://localhost:8080/books/isbn/9780743210898 \ No newline at end of file diff --git a/src/main/java/com/getdata/restcall_test1/Controller/BooksController.java b/src/main/java/com/getdata/restcall_test1/Controller/BooksController.java index 14d6f3c..6d30754 100644 --- a/src/main/java/com/getdata/restcall_test1/Controller/BooksController.java +++ b/src/main/java/com/getdata/restcall_test1/Controller/BooksController.java @@ -5,7 +5,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; - +import org.springframework.http.HttpStatus; import java.util.List; @RestController @@ -45,12 +45,25 @@ public ResponseEntity getBookByISBN(@PathVariable String isbn) { return ResponseEntity.notFound().build(); } } + @PostMapping("/createBook") + public ResponseEntity createBook(@RequestBody Books book) { + booksService.createBook(book); + return new ResponseEntity<>(HttpStatus.CREATED); + } } - //http://localhost:8080/books/Fantasy for genre - //http://localhost:8080/books/Best Sellers for best-seller +//http://localhost:8080/books/Fantasy for genre +//http://localhost:8080/books/Best Sellers for best-seller +//http://localhost:8080/books/publisher/discount?publisher=Bantam&discountPercent=5 discount for publisher +//http://localhost:8080/books/Vintage/5 a more simple way to update price +//GET http://localhost:8080/books/isbn/9780743210898 for isbn + + + + //http://localhost:8080/books/genre/Fantasy for genre + //http://localhost:8080/books/best-sellers for best-seller //http://localhost:8080/books/publisher/discount?publisher=Bantam&discountPercent=5 discount for publisher //http://localhost:8080/books/Vintage/5 a more simple way to update price //GET http://localhost:8080/books/isbn/9780743210898 for isbn diff --git a/src/main/java/com/getdata/restcall_test1/Controller/CreditCardController.java b/src/main/java/com/getdata/restcall_test1/Controller/CreditCardController.java deleted file mode 100644 index e9d735c..0000000 --- a/src/main/java/com/getdata/restcall_test1/Controller/CreditCardController.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.getdata.restcall_test1.Controller; - -import com.getdata.restcall_test1.Entity.CreditCard; -import com.getdata.restcall_test1.Service.CreditCardService; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -@RestController -@RequestMapping("/cards") -public class CreditCardController { - - private CreditCardService cardService; - - public CreditCardController(CreditCardService cardService){ - this.cardService = cardService; - } - - @PostMapping("/postCard") - public CreditCard postCard(CreditCard card){ - cardService.postCard(card); - return card; - } -} diff --git a/src/main/java/com/getdata/restcall_test1/Controller/UserController.java b/src/main/java/com/getdata/restcall_test1/Controller/UserController.java deleted file mode 100644 index d7fa730..0000000 --- a/src/main/java/com/getdata/restcall_test1/Controller/UserController.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.getdata.restcall_test1.Controller; - -import com.getdata.restcall_test1.Entity.Books; -import com.getdata.restcall_test1.Entity.User; -import com.getdata.restcall_test1.Service.UserService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -@RestController -@RequestMapping("/users") -public class UserController { - - private UserService userService; - - public UserController(UserService userService){ - this.userService = userService; - } - - @GetMapping("/getUser/{Username}") - public ResponseEntity> getUsersByUsername(@PathVariable String Username) { - List users = userService.getUsersByUsername(Username); - return ResponseEntity.ok(users); - } - - @PostMapping("/postUser") - public User postUser(User user){ - userService.postUser(user); - return user; - } - -} diff --git a/src/main/java/com/getdata/restcall_test1/Entity/Author.java b/src/main/java/com/getdata/restcall_test1/Entity/Author.java index 84c22d3..fcc4073 100644 --- a/src/main/java/com/getdata/restcall_test1/Entity/Author.java +++ b/src/main/java/com/getdata/restcall_test1/Entity/Author.java @@ -1,5 +1,7 @@ package com.getdata.restcall_test1.Entity; import jakarta.persistence.*; +import lombok.Getter; +import lombok.Setter; @Entity @@ -16,24 +18,19 @@ public Author(){ } @Id + @Getter + @Setter @Column(name = "AuthorID") private String AuthorID; + @Getter + @Setter @Column(name = "FirstName") private String FirstName; + @Getter + @Setter @Column(name = "LastName") private String LastName; - public String getAuthorID(){ - return this.AuthorID; - } - - public String getFirstName(){ - return this.FirstName; - } - - public String getLastName(){ - return this.LastName; - } } \ No newline at end of file diff --git a/src/main/java/com/getdata/restcall_test1/Entity/Books.java b/src/main/java/com/getdata/restcall_test1/Entity/Books.java index 4f3d711..fd79a75 100644 --- a/src/main/java/com/getdata/restcall_test1/Entity/Books.java +++ b/src/main/java/com/getdata/restcall_test1/Entity/Books.java @@ -1,5 +1,6 @@ package com.getdata.restcall_test1.Entity; -import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.annotation.JsonBackReference; +import com.fasterxml.jackson.annotation.JsonIgnore; import jakarta.persistence.*; import lombok.Getter; import lombok.Setter; @@ -56,57 +57,11 @@ public Books() {} @Column(name = "ISBN") private String ISBN; + @Getter @Setter + @JsonBackReference @ManyToOne @JoinColumn(name = "AuthorID") private Author author; -} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +} \ No newline at end of file diff --git a/src/main/java/com/getdata/restcall_test1/Entity/CreditCard.java b/src/main/java/com/getdata/restcall_test1/Entity/CreditCard.java deleted file mode 100644 index c1f3717..0000000 --- a/src/main/java/com/getdata/restcall_test1/Entity/CreditCard.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.getdata.restcall_test1.Entity; - -import com.fasterxml.jackson.annotation.JsonBackReference; -import com.fasterxml.jackson.annotation.JsonIgnore; -import jakarta.persistence.*; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -import java.sql.Date; - -@Entity -@Table(name = "CreditCards") -@NoArgsConstructor -@AllArgsConstructor -public class CreditCard { - - @Getter - @Setter - @Id - @Column(name = "CardNum") - private String CardNum; - - @Getter - @Setter - @Column(name = "CVV") - private int CVV; - - @Getter - @Setter - @Column(name = "ExpDate") - private Date ExpDate; - - @Getter - @Setter - @Column - private String UserID; - - @Getter - @Setter - @JsonIgnore - @ManyToOne - @JoinColumn(name = "UserID", insertable = false, updatable = false) - private User user; - - -} diff --git a/src/main/java/com/getdata/restcall_test1/Entity/User.java b/src/main/java/com/getdata/restcall_test1/Entity/User.java deleted file mode 100644 index 31eb804..0000000 --- a/src/main/java/com/getdata/restcall_test1/Entity/User.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.getdata.restcall_test1.Entity; - -import jakarta.persistence.*; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -import java.util.ArrayList; -import java.util.List; - -@Entity -@Table(name = "Users") -@NoArgsConstructor -@AllArgsConstructor -public class User { - - - @Getter - @Setter - @Id - @Column(name = "UserID") - private String UserID; - - @Getter - @Setter - @Column(name = "Username", unique = true) - private String username; - - @Getter - @Setter - @Column(name = "PW") - private String PW; - - @Getter - @Setter - @Column(name = "FullName") - private String FullName; - - @Getter - @Setter - @Column(name = "EmailAddress") - private String EmailAddress; - - @Getter - @Setter - @Column(name = "HomeAddress") - private String HomeAddress; -} diff --git a/src/main/java/com/getdata/restcall_test1/Repository/AuthorRepo.java b/src/main/java/com/getdata/restcall_test1/Repository/AuthorRepo.java index abf24dd..b87d95d 100644 --- a/src/main/java/com/getdata/restcall_test1/Repository/AuthorRepo.java +++ b/src/main/java/com/getdata/restcall_test1/Repository/AuthorRepo.java @@ -1,8 +1,14 @@ package com.getdata.restcall_test1.Repository; - +import com.getdata.restcall_test1.Entity.Books; +import java.util.List; import com.getdata.restcall_test1.Entity.Author; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; public interface AuthorRepo extends JpaRepository { + + @Query("SELECT b FROM Books b WHERE b.author.AuthorID = :authorId") + List findBooksByAuthorID(@Param("authorId") String authorId); } \ No newline at end of file diff --git a/src/main/java/com/getdata/restcall_test1/Repository/BookRepo.java b/src/main/java/com/getdata/restcall_test1/Repository/BookRepo.java index 19c1477..5beee4d 100644 --- a/src/main/java/com/getdata/restcall_test1/Repository/BookRepo.java +++ b/src/main/java/com/getdata/restcall_test1/Repository/BookRepo.java @@ -17,11 +17,11 @@ public interface BookRepo extends JpaRepository{ @Query("SELECT b FROM Books b JOIN Rating r ON b.ISBN = r.ISBN WHERE r.rating = :rating") List findBooksByRating(@Param("rating") int rating); - // Optional findById(Long id); + // Optional findById(Long id); List findByPublisher(String publisher); // Find a book by ISBN Optional findById(String isbn); -} +} \ No newline at end of file diff --git a/src/main/java/com/getdata/restcall_test1/Repository/CreditCardRepo.java b/src/main/java/com/getdata/restcall_test1/Repository/CreditCardRepo.java deleted file mode 100644 index 786fb48..0000000 --- a/src/main/java/com/getdata/restcall_test1/Repository/CreditCardRepo.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.getdata.restcall_test1.Repository; - -import com.getdata.restcall_test1.Entity.*; -import org.springframework.data.jpa.repository.JpaRepository; - -public interface CreditCardRepo extends JpaRepository{ -} diff --git a/src/main/java/com/getdata/restcall_test1/Repository/RatingRepo.java b/src/main/java/com/getdata/restcall_test1/Repository/RatingRepo.java index 9520e64..08ba6af 100644 --- a/src/main/java/com/getdata/restcall_test1/Repository/RatingRepo.java +++ b/src/main/java/com/getdata/restcall_test1/Repository/RatingRepo.java @@ -12,9 +12,9 @@ public interface RatingRepo extends JpaRepository { List findByRating(Integer ratingValue); - // List findByBookISBN(String ISBN); + // List findByBookISBN(String ISBN); @Query("SELECT b from Books b JOIN Rating r ON b.ISBN = r.ISBN WHERE r.rating >= :ratingValue") List findBooksByRatingOrHigher(@Param("ratingValue") Integer ratingValue); -} +} \ No newline at end of file diff --git a/src/main/java/com/getdata/restcall_test1/Repository/UserRepo.java b/src/main/java/com/getdata/restcall_test1/Repository/UserRepo.java deleted file mode 100644 index 03bb856..0000000 --- a/src/main/java/com/getdata/restcall_test1/Repository/UserRepo.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.getdata.restcall_test1.Repository; - -import com.getdata.restcall_test1.Entity.*; -import org.springframework.data.jpa.repository.JpaRepository; - -import java.util.List; - -public interface UserRepo extends JpaRepository{ - - List findByUsername(String Username); -} diff --git a/src/main/java/com/getdata/restcall_test1/Service/AuthorService.java b/src/main/java/com/getdata/restcall_test1/Service/AuthorService.java index f7b5672..c7d466c 100644 --- a/src/main/java/com/getdata/restcall_test1/Service/AuthorService.java +++ b/src/main/java/com/getdata/restcall_test1/Service/AuthorService.java @@ -4,6 +4,8 @@ import com.getdata.restcall_test1.Entity.Author; import org.springframework.stereotype.Service; import org.springframework.beans.factory.annotation.Autowired; +import com.getdata.restcall_test1.Entity.Books; +import java.util.List; @Service public class AuthorService { @@ -12,6 +14,14 @@ public class AuthorService { private AuthorRepo authorRepo; public Author getAuthorsByID(String AuthorID){ + return authorRepo.findById(AuthorID).orElse(null); } + public List getBooksByAuthorID(String AuthorID){ + return authorRepo.findBooksByAuthorID(AuthorID); + } + + public void createAuthor(Author author) { + authorRepo.save(author); + } } \ No newline at end of file diff --git a/src/main/java/com/getdata/restcall_test1/Service/BooksService.java b/src/main/java/com/getdata/restcall_test1/Service/BooksService.java index 6dd4c0b..a57c268 100644 --- a/src/main/java/com/getdata/restcall_test1/Service/BooksService.java +++ b/src/main/java/com/getdata/restcall_test1/Service/BooksService.java @@ -29,6 +29,7 @@ public List getBooksByRating(int rating) { public void createBook(Books book) { + bookRepo.save(book); } @@ -52,4 +53,4 @@ public void updateBookPrices(String publisher, double discountPercent) { } -} +} \ No newline at end of file diff --git a/src/main/java/com/getdata/restcall_test1/Service/CreditCardService.java b/src/main/java/com/getdata/restcall_test1/Service/CreditCardService.java deleted file mode 100644 index fe393ac..0000000 --- a/src/main/java/com/getdata/restcall_test1/Service/CreditCardService.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.getdata.restcall_test1.Service; - -import com.getdata.restcall_test1.Entity.CreditCard; -import com.getdata.restcall_test1.Entity.User; -import com.getdata.restcall_test1.Repository.CreditCardRepo; -import com.getdata.restcall_test1.Repository.UserRepo; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -@Service -public class CreditCardService { - - @Autowired - private CreditCardRepo cardRepo; - - - public CreditCard postCard(CreditCard card){ - cardRepo.save(card); - return card; - } -} diff --git a/src/main/java/com/getdata/restcall_test1/Service/RatingService.java b/src/main/java/com/getdata/restcall_test1/Service/RatingService.java index 814620b..bbc0bf8 100644 --- a/src/main/java/com/getdata/restcall_test1/Service/RatingService.java +++ b/src/main/java/com/getdata/restcall_test1/Service/RatingService.java @@ -24,6 +24,4 @@ public List getBooksByRatingOrHigher(Integer ratingValue) { } //test -} - - +} \ No newline at end of file diff --git a/src/main/java/com/getdata/restcall_test1/Service/UserService.java b/src/main/java/com/getdata/restcall_test1/Service/UserService.java deleted file mode 100644 index c5aa76f..0000000 --- a/src/main/java/com/getdata/restcall_test1/Service/UserService.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.getdata.restcall_test1.Service; - -import com.getdata.restcall_test1.Entity.*; -import com.getdata.restcall_test1.Repository.UserRepo; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.List; - -@Service -public class UserService { - - @Autowired - private UserRepo userRepo; - - public List getUsersByUsername(String Username){ - return userRepo.findByUsername(Username); - } - - public User postUser(User user){ - userRepo.save(user); - return user; - } - - -}