Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Haz como yo hice

package com.tuempresa.series.service;

import com.tuempresa.series.dto.DatosSerie;
import com.tuempresa.series.dto.DatosSerieDetalle;
import com.tuempresa.series.model.Serie;
import com.tuempresa.series.repository.SerieRepository;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class SerieService {

private final SerieRepository repositorio;

public SerieService(SerieRepository repositorio) {
    this.repositorio = repositorio;
}

public List<DatosSerie> obtenerSeries() {
    return repositorio.findAll()
            .stream()
            .map(s -> new DatosSerie(
                    s.getId(),
                    s.getTitulo(),
                    s.getTotalTemporadas(),
                    s.getEvaluacion(),
                    s.getPoster()
            ))
            .toList();
}

public List<DatosSerie> obtenerTop5() {
    return repositorio.findTop5ByOrderByEvaluacionDesc()
            .stream()
            .map(s -> new DatosSerie(
                    s.getId(),
                    s.getTitulo(),
                    s.getTotalTemporadas(),
                    s.getEvaluacion(),
                    s.getPoster()
            ))
            .toList();
}

public List<DatosSerie> obtenerLanzamientos() {
    return repositorio.findTop5ByOrderByFechaLanzamientoDesc()
            .stream()
            .map(s -> new DatosSerie(
                    s.getId(),
                    s.getTitulo(),
                    s.getTotalTemporadas(),
                    s.getEvaluacion(),
                    s.getPoster()
            ))
            .toList();
}

public DatosSerieDetalle obtenerDetalle(Long id) {
    Serie serie = repositorio.findById(id)
            .orElseThrow();

    return new DatosSerieDetalle(
            serie.getId(),
            serie.getTitulo(),
            serie.getTotalTemporadas(),
            serie.getEvaluacion(),
            serie.getPoster(),
            serie.getGenero(),
            serie.getActores(),
            serie.getSinopsis()
    );
}

}

package com.tuempresa.series.controller;

import com.tuempresa.series.dto.DatosSerie;
import com.tuempresa.series.dto.DatosSerieDetalle;
import com.tuempresa.series.service.SerieService;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/series")
public class SerieController {

private final SerieService servicio;

public SerieController(SerieService servicio) {
    this.servicio = servicio;
}

@GetMapping
public List<DatosSerie> obtenerSeries() {
    return servicio.obtenerSeries();
}

@GetMapping("/top5")
public List<DatosSerie> obtenerTop5() {
    return servicio.obtenerTop5();
}

@GetMapping("/lanzamientos")
public List<DatosSerie> obtenerLanzamientos() {
    return servicio.obtenerLanzamientos();
}

@GetMapping("/{id}")
public DatosSerieDetalle obtenerDetalle(@PathVariable Long id) {
    return servicio.obtenerDetalle(id);
}

}

package com.tuempresa.series.repository;

import com.tuempresa.series.model.Serie;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;

public interface SerieRepository extends JpaRepository<Serie, Long> {

List<Serie> findTop5ByOrderByEvaluacionDesc();

List<Serie> findTop5ByOrderByFechaLanzamientoDesc();

}

package com.tuempresa.series.dto;

public record DatosSerie(
Long id,
String titulo,
Integer totalTemporadas,
Double evaluacion,
String poster
) {
}

package com.tuempresa.series.dto;

public record DatosSerieDetalle(
Long id,
String titulo,
Integer totalTemporadas,
Double evaluacion,
String poster,
String genero,
String actores,
String sinopsis
) {
}

package com.tuempresa.series.model;

import jakarta.persistence.*;
import java.time.LocalDate;

@Entity
@Table(name = "series")
public class Serie {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

private String titulo;
private Integer totalTemporadas;
private Double evaluacion;
private String poster;

private String genero;
private String actores;

@Column(columnDefinition = "TEXT")
private String sinopsis;

private LocalDate fechaLanzamiento;

}

1 respuesta

Hola David,

Gracias por compartir tu código con la comunidad. Es muy valioso ver cómo aplicas en la práctica los conceptos del curso.

Te recomiendo que puedas interactuar con el resto de nuestros compañeros por nuestro Discord.

En virtud de que en Discord el alcance es mayor, la interacción es inmediata y llega a más compañeros, y el foro solo quedaría para esclarecer cualquier duda que puedas tener sobre el contenido de los cursos.

De esa manera, si quieres seguir compartiendo tu código, proyectos o repositorios, sea por el Discord — con certeza por ahí llegará a más personas.

¡Gracias nuevamente por tu aporte!

Saludos,

Si este post te ayudó, por favor, marca como solucionado ✓. ¡Continúa con tus estudios!