SerieController.java
@GetMapping("/{id}/temporadas/top")
public List<EpisodioDTO> obterTop5EpisodiosPorSerie(@PathVariable Long id) {
return servico.obterTop5EpisodiosPorSerie(id);
}
Mapeado o caminho do GET solicitado no front.
SerieService.java
public List<EpisodioDTO> obterTop5EpisodiosPorSerie(Long id) {
return repositorio.obterTop5EpisodiosPorSerie(id)
.stream()
.map(e -> new EpisodioDTO(e.getNumeroEpisodio(), e.getTemporada(), e.getTitulo()))
.collect(Collectors.toList());
}
SerieRepository.java
@Query("SELECT e FROM Serie s JOIN s.episodios e WHERE s.id = :id ORDER BY e.avaliacao DESC LIMIT 5")
List<Episodio> obterTop5EpisodiosPorSerie(Long id);
Dentro do ID da série selecionada, ordena decrescente com base na avaliação de cada episódio e limita em 5 resultados.
Demonstração no frontend: