From 64569c4f81550bd3d245a336ba791334e5781dd8 Mon Sep 17 00:00:00 2001 From: guams Date: Tue, 24 Sep 2024 11:33:41 +0200 Subject: [PATCH] CRUD sur post (pas de auth) --- .../review/controller/PostController.java | 82 +++++++++++++++++++ .../java/com/guams/review/modele/Post.java | 6 +- .../java/com/guams/review/modele/User.java | 3 +- .../review/repository/PostRepository.java | 9 ++ 4 files changed, 97 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/guams/review/controller/PostController.java create mode 100644 src/main/java/com/guams/review/repository/PostRepository.java diff --git a/src/main/java/com/guams/review/controller/PostController.java b/src/main/java/com/guams/review/controller/PostController.java new file mode 100644 index 0000000..9d9890e --- /dev/null +++ b/src/main/java/com/guams/review/controller/PostController.java @@ -0,0 +1,82 @@ +package com.guams.review.controller; + +import com.guams.review.modele.Post; +import com.guams.review.modele.User; +import com.guams.review.repository.PostRepository; +import com.guams.review.repository.UserRepository; +import com.guams.review.service.PostService; +import org.springframework.http.*; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Optional; + +@RestController +@RequestMapping("/api/posts") +public class PostController +{ + private final PostService postService; + private final PostRepository postRepository; + private final UserRepository userRepository; + + + public PostController(PostService postService, PostRepository postRepository, UserRepository userRepository) { + this.postService = postService; + this.postRepository = postRepository; + this.userRepository = userRepository; + } + + @GetMapping + public ResponseEntity> getPosts() + { + return new ResponseEntity<>(postRepository.findAll(), new HttpHeaders(), HttpStatus.OK); + } + + @GetMapping("{post-id}") + public ResponseEntity getPost(@PathVariable("post-id") Long id) + { + Optional post = postRepository.findById(id); + if (post.isPresent()) { + return new ResponseEntity<>(post.get(), new HttpHeaders(), HttpStatus.OK); + } + return new ResponseEntity<>(HttpStatus.NOT_FOUND); + } + + @PostMapping + public ResponseEntity getPost(@RequestBody Post post, @RequestParam Long userId) + { + Optional userExists = userRepository.findById(userId); + if (userExists.isPresent()) { + post.setUser(userExists.get()); + postRepository.save(post); + return new ResponseEntity<>("Created", HttpStatus.CREATED); + } + return new ResponseEntity<>("Erreur", HttpStatus.INTERNAL_SERVER_ERROR); + } + + @PutMapping("{post-id}") + public ResponseEntity updatePost(@PathVariable("post-id") Long id, @RequestBody Post post) + { + Optional postExists = postRepository.findById(id); + if (postExists.isPresent()) { + Post newPost = postExists.get(); + newPost.setTitle(post.getTitle()); + newPost.setBody(post.getBody()); + newPost.setImage(post.getImage()); + postRepository.save(newPost); + return new ResponseEntity<>("Updated", HttpStatus.OK); + } + return new ResponseEntity<>("Erreur", HttpStatus.NOT_FOUND); + } + + @DeleteMapping("{post-id}") + public ResponseEntity deletePost(@PathVariable("post-id") Long id) + { + Optional postExists = postRepository.findById(id); + if (postExists.isPresent()) { + postRepository.delete(postExists.get()); + return new ResponseEntity<>("Deleted", HttpStatus.OK); + } + return new ResponseEntity<>("Erreur", HttpStatus.NOT_FOUND); + } +} diff --git a/src/main/java/com/guams/review/modele/Post.java b/src/main/java/com/guams/review/modele/Post.java index de54f4a..2841427 100644 --- a/src/main/java/com/guams/review/modele/Post.java +++ b/src/main/java/com/guams/review/modele/Post.java @@ -1,5 +1,6 @@ package com.guams.review.modele; +import com.fasterxml.jackson.annotation.JsonIgnore; import jakarta.persistence.*; import lombok.Builder; import lombok.Getter; @@ -10,8 +11,8 @@ import lombok.Setter; @Table(name = "POST") public class Post { - @Id - @GeneratedValue + @Id() + @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "TITLE", nullable = false) private String title; @@ -21,6 +22,7 @@ public class Post private String image; @ManyToOne @JoinColumn(name = "USER_ID", nullable = false) + @JsonIgnore // Pour pas avoir un json infini private User user; public Post() diff --git a/src/main/java/com/guams/review/modele/User.java b/src/main/java/com/guams/review/modele/User.java index ef293bd..09fab99 100644 --- a/src/main/java/com/guams/review/modele/User.java +++ b/src/main/java/com/guams/review/modele/User.java @@ -1,6 +1,7 @@ package com.guams.review.modele; +import com.fasterxml.jackson.annotation.JsonIgnore; import jakarta.persistence.*; import lombok.Builder; import lombok.Getter; @@ -16,7 +17,7 @@ import java.util.List; public class User { @Id - @GeneratedValue + @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "LOGIN", nullable = false, unique = true) diff --git a/src/main/java/com/guams/review/repository/PostRepository.java b/src/main/java/com/guams/review/repository/PostRepository.java new file mode 100644 index 0000000..f20a051 --- /dev/null +++ b/src/main/java/com/guams/review/repository/PostRepository.java @@ -0,0 +1,9 @@ +package com.guams.review.repository; + +import com.guams.review.modele.Post; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface PostRepository extends JpaRepository { +}