findById
Service
Antes
@Transactional(readOnly = true)
public PostDTO findById(String id) {
Post post = repository.findById(id).orElseThrow(() -> new ResourceNotFoundException("Recurso não encontrado"));
return new PostDTO(post);
}
Depois
public Mono<PostDTO> findById(String id) {
return repository.findById(id)
.map(PostDTO::new)
.switchIfEmpty(Mono.error(new ResourceNotFoundException("Recurso não encontrado")));
}
Controller
Antes
@GetMapping(value = "/{id}")
public ResponseEntity<PostDTO> findById(@PathVariable String id) {
PostDTO dto = service.findById(id);
return ResponseEntity.ok(dto);
}
Depois
@GetMapping(value = "/{id}")
public Mono<ResponseEntity<PostDTO>> findById(@PathVariable String id) {
return service.findById(id).map(postDTO -> ResponseEntity.ok().body(postDTO));
}
Atualizado