You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
2.7 KiB
72 lines
2.7 KiB
package com.example.wfwebapi.controller;
|
|
|
|
import java.util.List;
|
|
import java.util.stream.Collectors;
|
|
import com.example.wfwebapi.assembler.UserModelAssembler;
|
|
import com.example.wfwebapi.exception.ResourceNotFoundException;
|
|
import com.example.wfwebapi.model.User;
|
|
import com.example.wfwebapi.repository.UserRepository;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.data.domain.PageRequest;
|
|
import org.springframework.hateoas.CollectionModel;
|
|
import org.springframework.hateoas.EntityModel;
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
@RestController
|
|
@RequestMapping("/api/v1/users")
|
|
public class UserController {
|
|
|
|
@Autowired
|
|
private UserRepository userRepository;
|
|
|
|
@Autowired
|
|
private UserModelAssembler assembler;
|
|
|
|
// GET /api/v1/users/{id}
|
|
@GetMapping("/{id}")
|
|
public EntityModel<User> getUserById(@PathVariable Long id) {
|
|
User user = userRepository.findById(id)
|
|
.orElseThrow(() -> new ResourceNotFoundException("Utilisateur non trouvé : " + id));
|
|
return assembler.toModel(user);
|
|
}
|
|
|
|
// GET /api/v1/users/all?index=0&count=5
|
|
@GetMapping("/all")
|
|
public CollectionModel<EntityModel<User>> getAllUsers(@RequestParam int index, @RequestParam int count) {
|
|
List<EntityModel<User>> users = userRepository.findAll(PageRequest.of(index, count))
|
|
.stream().map(assembler::toModel)
|
|
.collect(Collectors.toList());
|
|
return CollectionModel.of(users);
|
|
}
|
|
|
|
// POST /api/v1/users
|
|
@PostMapping
|
|
public EntityModel<User> createUser(@RequestBody User newUser) {
|
|
User user = userRepository.save(newUser);
|
|
return assembler.toModel(user);
|
|
}
|
|
|
|
// PUT /api/v1/users?id=1
|
|
@PutMapping
|
|
public EntityModel<User> updateUser(@RequestParam Long id, @RequestBody User updatedUser) {
|
|
User user = userRepository.findById(id)
|
|
.map(u -> {
|
|
u.setUsername(updatedUser.getUsername());
|
|
u.setEmail(updatedUser.getEmail());
|
|
u.setPassword(updatedUser.getPassword());
|
|
u.setImage(updatedUser.getImage());
|
|
u.setCreation(updatedUser.getCreation());
|
|
return userRepository.save(u);
|
|
}).orElseThrow(() -> new ResourceNotFoundException("Utilisateur non trouvé : " + id));
|
|
return assembler.toModel(user);
|
|
}
|
|
|
|
// DELETE /api/v1/users?id=1
|
|
@DeleteMapping
|
|
public void deleteUser(@RequestParam Long id) {
|
|
if (!userRepository.existsById(id))
|
|
throw new ResourceNotFoundException("Utilisateur non trouvé : " + id);
|
|
userRepository.deleteById(id);
|
|
}
|
|
}
|