package managers; import models.Account; import models.Post; import models.PostBookmark; import play.db.jpa.JPA; import javax.persistence.NoResultException; import javax.persistence.Query; import java.util.List; /** * Created by Iven on 25.12.2015. */ public class PostBookmarkManager implements BaseManager { @Override public void create(Object object) { JPA.em().persist(object); } @Override public void update(Object object) { } @Override public void delete(Object object) { JPA.em().remove(object); } public PostBookmark findById(Long id) { return JPA.em().find(PostBookmark.class, id); } public PostBookmark findByAccountAndPost(Account account, Post post) { try { return (PostBookmark) JPA.em().createQuery("SELECT pl FROM PostBookmark pl WHERE pl.owner.id = :accountId AND pl.post.id = :postId") .setParameter("accountId", account.id) .setParameter("postId", post.id) .getSingleResult(); } catch (NoResultException exp) { return null; } } public static boolean isPostBookmarkedByAccount(Account account, Post post) { Query query = JPA.em().createQuery("SELECT COUNT(pl) FROM PostBookmark pl WHERE pl.owner.id = :accountId AND pl.post.id = :postId") .setParameter("accountId", account.id) .setParameter("postId", post.id); if(((Number) query.getSingleResult()).intValue() > 0) return true; return false; } @SuppressWarnings("unchecked") public List<Post> findByAccount(Account account) { return JPA.em().createQuery("SELECT pl.post FROM PostBookmark pl WHERE pl.owner.id = :accountId") .setParameter("accountId", account.id) .getResultList(); } }