diff --git a/src/main/java/com/guams/review/controller/UserController.java b/src/main/java/com/guams/review/controller/UserController.java index 7db008b..e4c82ed 100644 --- a/src/main/java/com/guams/review/controller/UserController.java +++ b/src/main/java/com/guams/review/controller/UserController.java @@ -1,6 +1,7 @@ package com.guams.review.controller; import com.guams.review.modele.User; +import com.guams.review.repository.UserRepository; import com.guams.review.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpEntity; @@ -14,31 +15,67 @@ import java.util.Optional; @RestController @RequestMapping(path = "api/users") -public class UserController -{ +public class UserController { private final UserService userService; + private final UserRepository userRepository; @Autowired - public UserController(UserService userService) { + public UserController(UserService userService, UserRepository userRepository) { this.userService = userService; + this.userRepository = userRepository; } @GetMapping - public ResponseEntity> getUsers() - { + public ResponseEntity> getUsers() { List users = userService.getUsers(); - return new ResponseEntity<>(users, new HttpHeaders(),HttpStatus.OK); + return new ResponseEntity<>(users, new HttpHeaders(), HttpStatus.OK); }; + @GetMapping("/{user-id}") + public ResponseEntity getUser(@PathVariable("user-id") Long id) { + Optional exists = userRepository.findById(id); + if (exists.isPresent()) { + return new ResponseEntity<>(exists.get(), new HttpHeaders(), HttpStatus.OK); + } + return new ResponseEntity<>(null, new HttpHeaders(), HttpStatus.NOT_FOUND); + } + @PostMapping - public ResponseEntity saveUser(@RequestParam User user) - { + public ResponseEntity saveUser(@RequestBody User user) { userService.saveUser(user); Optional exists = userService.findById(user.getId()); - if (exists.isPresent()) - { + if (exists.isPresent()) { return new ResponseEntity<>("Created", new HttpHeaders(), HttpStatus.CREATED); } return new ResponseEntity<>("Error", new HttpHeaders(), HttpStatus.INTERNAL_SERVER_ERROR); } + + @PutMapping("/{user-id}") + public ResponseEntity updateUser(@PathVariable("user-id") Long id, @RequestBody User user) + { + Optional exists = userService.findById(id); + if (exists.isPresent()) { + User newUser = exists.get(); + newUser.setLogin(user.getLogin()); + newUser.setPassword(user.getPassword()); + newUser.setPosts(user.getPosts()); + userService.saveUser(newUser); + return new ResponseEntity<>("Updated", new HttpHeaders(), HttpStatus.OK); + } + return new ResponseEntity<>("User not found", new HttpHeaders(), HttpStatus.NOT_FOUND); + } + + @DeleteMapping("{user-id}") + public ResponseEntity deleteUser(@PathVariable("user-id") Long id) + { + Optional exists = userService.findById(id); + if (exists.isPresent()) { + userRepository.delete(exists.get()); + return new ResponseEntity<>("Deleted", new HttpHeaders(), HttpStatus.OK); + + } + return new ResponseEntity<>("User not found", new HttpHeaders(), HttpStatus.NOT_FOUND); + + } + } diff --git a/src/main/java/com/guams/review/modele/User.java b/src/main/java/com/guams/review/modele/User.java index f2f4cb1..ef293bd 100644 --- a/src/main/java/com/guams/review/modele/User.java +++ b/src/main/java/com/guams/review/modele/User.java @@ -25,7 +25,7 @@ public class User { @Column(name = "PASSWORD", nullable = false) private String password; - @OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true) + @OneToMany(mappedBy = "user") private List posts; diff --git a/src/main/java/com/guams/review/service/UserService.java b/src/main/java/com/guams/review/service/UserService.java index fb41cee..2709826 100644 --- a/src/main/java/com/guams/review/service/UserService.java +++ b/src/main/java/com/guams/review/service/UserService.java @@ -33,4 +33,5 @@ public class UserService { return userRepository.findById(id); } + }