Meu controller
@GetMapping("/{id}/temporadas/top")
public List<EpisodioDTO> obterTopEpisodios(@PathVariable Long id){
return servico.obterTopEpisodios(id);
}
Meu serviço
public List<EpisodioDTO> obterTopEpisodios(Long id) {
var serie = repositorio.findById(id).get();
return repositorio.topEpisodiosPorSerie(serie)
.stream()
.map(e -> new EpisodioDTO(e.getTemporada(), e.getNumeroEpisodio(), e.getTitulo()))
.collect(Collectors.toList());
}
Meu repository
@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);
Meu front end alterado para receber os top 5 episodios
// Função para carregar o Top 5 Episódios de uma série
// Função para carregar o Top 5 Episódios de uma série
function carregarTop5Episodios() {
getDados(`/series/${serieId}/episodios/top5`)
.then(data => {
console.log(data); // Adicione esta linha para verificar os dados recebidos
if (!Array.isArray(data)) {
throw new Error('A resposta recebida não é um array');
}
const ul = document.createElement('ul');
ul.className = 'episodios-lista';
const listaHTML = data.map(episodio => `
<li>
${episodio.numeroEpisodio} - ${episodio.titulo}
</li>
`).join('');
ul.innerHTML = listaHTML;
fichaSerie.innerHTML = '';
fichaSerie.appendChild(ul);
})
.catch(error => {
console.error('Erro ao obter o Top 5 Episódios:', error);
fichaSerie.textContent = 'Não foi possível carregar o Top 5 Episódios.';
});
}