SerieService.java
package com.aluracursos.screenmatch.service;
import com.aluracursos.screenmatch.dto.SerieDTO;
import com.aluracursos.screenmatch.model.Serie;
import com.aluracursos.screenmatch.repository.SerieRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
@Service
public class SerieService {
@Autowired
private SerieRepository repository;
public List<SerieDTO> obtenerTodasLasSeries() {
return convierteDatos(repository.findAll());
}
public List<SerieDTO> obtenerTop5() {
return convierteDatos(repository.findTop5ByOrderByEvaluacionDesc());
}
public List<SerieDTO> obtenerLanzamientosMasRecientes(){
return convierteDatos(repository.lanzamientosMasRecientes());
}
public List<SerieDTO> convierteDatos(List<Serie> serie){
return serie.stream()
.map(s -> new SerieDTO(s.getId(), s.getTitulo(), s.getTotalTemporadas(), s.getEvaluacion(), s.getPoster(),
s.getGenero(), s.getActores(), s.getSinopsis()))
.collect(Collectors.toList());
}
public SerieDTO obtenerPorId(Long id) {
Optional<Serie> serie = repository.findById(id);
if (serie.isPresent()){
Serie s = serie.get();
return new SerieDTO(s.getId(), s.getTitulo(), s.getTotalTemporadas(), s.getEvaluacion(), s.getPoster(),
s.getGenero(), s.getActores(), s.getSinopsis());
}
return null;
}
}
Copia el código
SerieController.java
package com.aluracursos.screenmatch.controller;
import com.aluracursos.screenmatch.dto.SerieDTO;
import com.aluracursos.screenmatch.service.SerieService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("/series")
public class SerieController {
@Autowired
private SerieService servicio;
@GetMapping()
public List<SerieDTO> obtenerTodasLasSeries(){
return servicio.obtenerTodasLasSeries();
}
@GetMapping("/top5")
public List<SerieDTO> obtenerTop5(){
return servicio.obtenerTop5();
}
@GetMapping("/lanzamientos")
public List<SerieDTO> obtenerLanzamientosMasRecientes(){
return servicio.obtenerLanzamientosMasRecientes();
}
@GetMapping("/{id}")
public SerieDTO obtenerPorId(@PathVariable Long id){
return servicio.obtenerPorId(id);
}
}
Copia el código
En el Servicio, se creó el método convierteDatos() para convertir una lista de series en seriesDto, ya que ese código estaba siendo repetido algunas veces