1
resposta

[Sugestão] Resolução do desafio

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);
1 resposta

Olá, Mateus! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou a linguagem Java (Spring) para implementar corretamente a busca dos episódios, utilizou muito bem o Controller para expor o endpoint de forma clara e ainda compreendeu a importância do Service para centralizar a lógica de negócio.

Uma sugestão para o futuro seria considerar o retorno de uma lista vazia em vez de null quando a série não for encontrada, evitando possíveis erros de manipulação no consumo da API.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!