Commit 8ebb91c7 by Rubén Ramírez

feat: [RepositorioSeguimiento]:Creadas las funciones para trabajar con la BBDD y…

feat: [RepositorioSeguimiento]:Creadas las funciones para trabajar con la BBDD y las CRUD y buscar de los seguimientos
parent 67fb3064
package com.ujaen.tfg.mangaffinity.repositorios;
import com.ujaen.tfg.mangaffinity.entidades.Seguimiento;
import com.ujaen.tfg.mangaffinity.entidades.Usuario;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Optional;
@Repository
@Transactional
public class RepositorioSeguimiento {
@PersistenceContext
EntityManager em;
public void guardar(Seguimiento seguimiento) {
em.persist(seguimiento);
}
@Transactional
public void eliminar(Seguimiento seguimiento) {
seguimiento = em.contains(seguimiento) ? seguimiento : em.merge(seguimiento);
em.remove(seguimiento);
}
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
public boolean existe(Usuario seguidor, Usuario seguido) {
Long count = em.createQuery(
"SELECT COUNT(s) FROM Seguimiento s WHERE s.seguidor = :seguidor AND s.seguido = :seguido",
Long.class)
.setParameter("seguidor", seguidor)
.setParameter("seguido", seguido)
.getSingleResult();
return count > 0;
}
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
public Optional<Seguimiento> buscar(Usuario seguidor, Usuario seguido) {
return em.createQuery(
"SELECT s FROM Seguimiento s WHERE s.seguidor = :seguidor AND s.seguido = :seguido",
Seguimiento.class)
.setParameter("seguidor", seguidor)
.setParameter("seguido", seguido)
.getResultList()
.stream()
.findFirst();
}
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
public List<Seguimiento> obtenerSeguidosDe(Usuario seguidor) {
return em.createQuery(
"SELECT s FROM Seguimiento s WHERE s.seguidor = :seguidor",
Seguimiento.class)
.setParameter("seguidor", seguidor)
.getResultList();
}
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
public List<Seguimiento> obtenerSeguidoresDe(Usuario seguido) {
return em.createQuery(
"SELECT s FROM Seguimiento s WHERE s.seguido = :seguido",
Seguimiento.class)
.setParameter("seguido", seguido)
.getResultList();
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment