UserController.java 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package pl.dmcs.userservice.controller;
  2. import org.springframework.beans.factory.annotation.Autowired;
  3. import org.springframework.http.HttpStatus;
  4. import org.springframework.http.ResponseEntity;
  5. import org.springframework.web.bind.annotation.*;
  6. import pl.dmcs.userservice.dto.request.UpdateUserRequest;
  7. import pl.dmcs.userservice.dto.request.UserRequest;
  8. import pl.dmcs.userservice.dto.response.UserResponse;
  9. import pl.dmcs.userservice.mapper.UserMapper;
  10. import pl.dmcs.userservice.model.User;
  11. import pl.dmcs.userservice.service.UserService;
  12. import jakarta.validation.Valid;
  13. import java.util.List;
  14. import java.util.UUID;
  15. import java.util.stream.Collectors;
  16. @RestController
  17. @RequestMapping("/api/user")
  18. public class UserController {
  19. private final UserService userService;
  20. private final UserMapper userMapper;
  21. @Autowired
  22. public UserController(UserService userService, UserMapper userMapper) {
  23. this.userService = userService;
  24. this.userMapper = userMapper;
  25. }
  26. @GetMapping
  27. public ResponseEntity<List<UserResponse>> getAllUsers() {
  28. List<User> users = userService.getAllUsers();
  29. List<UserResponse> responses = users.stream()
  30. .map(userMapper::toResponse)
  31. .collect(Collectors.toList());
  32. return ResponseEntity.ok(responses);
  33. }
  34. @GetMapping("/{id}")
  35. public ResponseEntity<UserResponse> getUserById(@PathVariable UUID id) {
  36. User user = userService.getUserById(id);
  37. return ResponseEntity.ok(userMapper.toResponse(user));
  38. }
  39. @PostMapping
  40. public ResponseEntity<UserResponse> createUser(@Valid @RequestBody UserRequest request) {
  41. User user = userMapper.toEntity(request);
  42. User createdUser = userService.createUser(user);
  43. return ResponseEntity.status(HttpStatus.CREATED).body(userMapper.toResponse(createdUser));
  44. }
  45. @PutMapping("/{id}")
  46. public ResponseEntity<UserResponse> updateUser(
  47. @PathVariable UUID id,
  48. @Valid @RequestBody UserRequest request) {
  49. User updatedUser = userService.updateUserWithPut(id, request);
  50. return ResponseEntity.ok(userMapper.toResponse(updatedUser));
  51. }
  52. @PatchMapping("/{id}")
  53. public ResponseEntity<UserResponse> partialUpdateUser(
  54. @PathVariable UUID id,
  55. @Valid @RequestBody UpdateUserRequest request) {
  56. User updatedUser = userService.updateUserWithPatch(id, request);
  57. return ResponseEntity.ok(userMapper.toResponse(updatedUser));
  58. }
  59. @DeleteMapping("/{id}")
  60. public ResponseEntity<Void> deleteUser(@PathVariable UUID id) {
  61. userService.deleteUser(id);
  62. return ResponseEntity.noContent().build();
  63. }
  64. }