Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Resolução Mão na Massa

Pesquisando no código e aqui no fórum cheguei à seguinte solução:

  • SerieRepository:
@Query("SELECT e from Serie s " +
            "JOIN s.episodios e " +
            "WHERE s.id = :id " +
            "ORDER BY e.avaliacao DESC LIMIT 5")
    List<Episodio> top5EpisodiosPorId(Long id);
  • SerieController:
@GetMapping("/{id}/temporadas/top")
    public List<EpisodioDTO> obterTop5Episodios(@PathVariable Long id){
        return servico.obterTop5Episodios(id);
    }
  • SerieService:
private List<EpisodioDTO> converteDadosEpisodios(List<Episodio> episodios){
        return episodios.stream()
                .map(e -> new EpisodioDTO(
                        e.getTemporada(),
                        e.getTitulo(),
                        e.getNumeroEpisodio()))
                .collect(Collectors.toList());
    }
    public List<EpisodioDTO> obterTop5Episodios(Long id) {
        return converteDadosEpisodios(repositorio.top5EpisodiosPorId(id));
    }

Ao testar achei que tinha feito algo errado, pois, não importava a temporada que eu escolhia, ele sempre retornava o Top5, até que encontrei aqui o seguinte tópico https://cursos.alura.com.br/forum/topico-bug-possivel-bug-no-front-353467 . Implementei a solução no Front e tudo funcionou!

1 resposta
solução!

Oi, Danilo! Tudo bem?

Ótimo código, parabéns inclusive por ter encontrado uma solução para o problema e obrigada por tê-lo compartilhado com a nossa comunidade! Espero que continue a explorar os conteúdos para ampliar seu conhecimento e desenvolver novas habilidades. Caso tenha restado alguma dúvida em relação a qualquer conteúdo do curso ou atividade, não hesite em perguntar, estou disponível e ficarei super feliz em poder ajudar!

Um forte abraço e bons estudos!