package org.iatoki.judgels.uriel.models.daos.impls;
import org.iatoki.judgels.play.models.daos.impls.AbstractHibernateDao;
import org.iatoki.judgels.uriel.models.daos.ContestReadDao;
import org.iatoki.judgels.uriel.models.entities.ContestReadModel;
import org.iatoki.judgels.uriel.models.entities.ContestReadModel_;
import play.db.jpa.JPA;
import javax.inject.Named;
import javax.inject.Singleton;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
import java.util.List;
@Singleton
@Named("contestReadDao")
public final class ContestReadHibernateDao extends AbstractHibernateDao<Long, ContestReadModel> implements ContestReadDao {
public ContestReadHibernateDao() {
super(ContestReadModel.class);
}
@Override
public boolean existByUserJidAndTypeAndJid(String userJid, String type, String jid) {
CriteriaBuilder cb = JPA.em().getCriteriaBuilder();
CriteriaQuery<Long> query = cb.createQuery(Long.class);
Root<ContestReadModel> root = query.from(ContestReadModel.class);
query
.select(cb.count(root))
.where(cb.and(cb.equal(root.get(ContestReadModel_.userJid), userJid), cb.equal(root.get(ContestReadModel_.type), type), cb.equal(root.get(ContestReadModel_.readJid), jid)));
return (JPA.em().createQuery(query).getSingleResult() != 0);
}
@Override
public long countReadByUserJidAndTypeAndJidList(String userJid, String type, List<String> JidList) {
CriteriaBuilder cb = JPA.em().getCriteriaBuilder();
CriteriaQuery<Long> query = cb.createQuery(Long.class);
Root<ContestReadModel> root = query.from(ContestReadModel.class);
query
.select(cb.count(root))
.where(cb.and(cb.equal(root.get(ContestReadModel_.userJid), userJid), cb.equal(root.get(ContestReadModel_.type), type), root.get(ContestReadModel_.readJid).in(JidList)));
return JPA.em().createQuery(query).getSingleResult();
}
}