Update
Atualizado
Atualizado
O ID passado na requisição postman, foi um ID tirado do MongoDB compass.
Controller
@PutMapping(value = "/{id}")
public ResponseEntity<UserDTO> update(@PathVariable String id, @RequestBody UserDTO dto) {
dto = userService.update(id, dto);
return ResponseEntity.ok().body(dto);
}
Service
Criamos aqui um método private dentro do service só para reaproveitar a localização de um User por id:
private User getEntityById(String id) {
Optional<User> user = userRepository.findById(id);
return user.orElseThrow(() -> new ResourceNotFound("Objeto não encontrado."));
}
public UserDTO update(String id, UserDTO dto) {
try {
User entity = getEntityById(id);
copyDtoToEntity(dto, entity);
entity = userRepository.save(entity);
return new UserDTO(entity);
} catch (EntityNotFoundException e) {
throw new ResourceNotFound("Recurso não encontrado");
}
}