Commit 175871fd by Rubén Ramírez

fix: [RepositorioUsuario]: Corregidas algunas funciones en el repositorio para…

fix: [RepositorioUsuario]: Corregidas algunas funciones en el repositorio para la correcta división de capas
parent ecff9b3a
...@@ -17,33 +17,10 @@ public class RepositorioUsuario { ...@@ -17,33 +17,10 @@ public class RepositorioUsuario {
@PersistenceContext @PersistenceContext
EntityManager em; EntityManager em;
public void guardar(Usuario usuario) { public void guardar(Usuario usuario) {
// Email no registrados
boolean emailExistente = !em.createQuery("SELECT u FROM Usuario u WHERE u.email = :email", Usuario.class)
.setParameter("email", usuario.getEmail())
.getResultList()
.isEmpty();
if (emailExistente) {
throw new UsuarioYaRegistrado();
}
//Nombre de usuario no utilizado
boolean nombreUsuarioExistente = !em.createQuery("SELECT u FROM Usuario u WHERE u.nombreUsuario = :nombreUsuario", Usuario.class)
.setParameter("nombreUsuario", usuario.getNombreUsuario())
.getResultList()
.isEmpty();
if (nombreUsuarioExistente) {
throw new NombreUsuarioYaCogido();
}
em.persist(usuario); em.persist(usuario);
} }
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true) @Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
public Optional<Usuario> findByEmail(String email) { public Optional<Usuario> findByEmail(String email) {
String query = "SELECT u FROM Usuario u WHERE u.email = :email"; String query = "SELECT u FROM Usuario u WHERE u.email = :email";
...@@ -54,24 +31,26 @@ public class RepositorioUsuario { ...@@ -54,24 +31,26 @@ public class RepositorioUsuario {
.findFirst(); .findFirst();
} }
@Transactional(readOnly = true)
public Optional<Usuario> findById(Long id) { public Optional<Usuario> findById(Long id) {
Usuario usuario = em.find(Usuario.class, id); Usuario usuario = em.find(Usuario.class, id);
return Optional.ofNullable(usuario); return Optional.ofNullable(usuario);
} }
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true) @Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
public boolean existePorEmail(String email) { public boolean existePorEmail(String email) {
return !em.createQuery("SELECT u FROM Usuario u WHERE u.email = :email", Usuario.class) Long count = em.createQuery("SELECT COUNT(u) FROM Usuario u WHERE u.email = :email", Long.class)
.setParameter("email", email) .setParameter("email", email)
.getResultList() .getSingleResult();
.isEmpty(); return count > 0;
} }
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true) @Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
public boolean existePorNombreUsuario(String nombreUsuario) { public boolean existePorNombreUsuario(String nombreUsuario) {
return !em.createQuery("SELECT u FROM Usuario u WHERE u.nombreUsuario = :nombreUsuario", Usuario.class) Long count = em.createQuery("SELECT COUNT(u) FROM Usuario u WHERE u.nombreUsuario = :nombreUsuario", Long.class)
.setParameter("nombreUsuario", nombreUsuario) .setParameter("nombreUsuario", nombreUsuario)
.getResultList() .getSingleResult();
.isEmpty(); return count > 0;
} }
} }
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