Desafio concluido!
Foi feito no curso passado de Spring, na aula 4, uma busca no banco dos top 5 episódios de uma série, apenas implementei ele no SerieService e criei o método de chamando ele no Controller.(Ficou verboso, mas funciona corretamente.)
SerieController
@GetMapping("/{id}/temporadas/top")
public List<EpisodioDTO> obterEpisodiosTopCinco(@PathVariable Long id) {
return servico.obterEpisodiosTopCinco(id);
}
SerieService
public List<EpisodioDTO> obterEpisodiosTopCinco(Long id) {
Optional<Serie> serieBuscada = repositorio.findById(id);
if (serieBuscada.isPresent()) {
Serie s = serieBuscada.get();
List<Episodio> topEpisodios = repositorio.topEpisodiosPorSerie(s);
return topEpisodios.stream()
.map(e -> new EpisodioDTO(e.getTemporada(),e.getNumeroEpisodio(),e.getTitulo()))
.collect(Collectors.toList());
}
return null;
}
SerieRepository
@Query("SELECT e FROM Serie s JOIN s.episodios e WHERE s = :serie ORDER BY e.avaliacao DESC LIMIT 5")
List<Episodio> topEpisodiosPorSerie(Serie serie);