Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

buscar nome de um medico

Ola gostaria de implementar uma função no endpoint do GetMapping onde eu faço a busca de um medico por nome, como eu posso fazer isso.

@GetMapping public ResponseEntity <Page> listar(@PageableDefault() Pageable paginacao) {

    var page = repository.findAllByAtivoTrue(paginacao)
            .map(DadosListagemMedico::new);
    return ResponseEntity.ok(page);
}
2 respostas
solução!

Olá, Daniel!

Para implementar uma busca de um médico por nome no seu endpoint @GetMapping, você pode adicionar um parâmetro de consulta (query parameter) ao seu método. Vou te mostrar como fazer isso passo a passo.

Primeiro, você precisa ajustar o seu repositório para incluir um método que busque médicos pelo nome. Supondo que você esteja utilizando Spring Data JPA, você pode adicionar um método na sua interface de repositório:

public interface MedicoRepository extends JpaRepository<Medico, Long> {
    Page<Medico> findByNomeContainingIgnoreCaseAndAtivoTrue(String nome, Pageable pageable);
}

Esse método vai buscar médicos cujo nome contém a string fornecida, ignorando maiúsculas e minúsculas, e que estão ativos.

Agora, você pode ajustar o seu endpoint @GetMapping para aceitar um parâmetro de consulta opcional para o nome do médico:

@GetMapping
public ResponseEntity<Page<DadosListagemMedico>> listar(
        @RequestParam(required = false) String nome,
        @PageableDefault() Pageable paginacao) {
    
    Page<Medico> page;
    
    if (nome != null && !nome.isEmpty()) {
        page = repository.findByNomeContainingIgnoreCaseAndAtivoTrue(nome, paginacao);
    } else {
        page = repository.findAllByAtivoTrue(paginacao);
    }
    
    Page<DadosListagemMedico> pageDto = page.map(DadosListagemMedico::new);
    return ResponseEntity.ok(pageDto);
}

Com essa implementação, se você chamar o endpoint sem o parâmetro nome, ele vai listar todos os médicos ativos. Se você fornecer um valor para o parâmetro nome, ele vai filtrar os médicos cujo nome contém a string fornecida.

Exemplo de chamada do endpoint:

  • Para listar todos os médicos ativos: GET /medicos
  • Para buscar médicos pelo nome: GET /medicos?nome=João

Espero ter ajudado e bons estudos!

Obrigadooooooo! deu super certo, estava quebrando a cabeça essa semana para fazer isso hahahaha