package me.kavin.piped.utils; import java.util.LinkedHashSet; import java.util.List; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.JoinType; import javax.persistence.criteria.Root; import org.hibernate.Session; import it.unimi.dsi.fastutil.objects.ObjectArrayList; import me.kavin.piped.utils.obj.db.Channel; import me.kavin.piped.utils.obj.db.PubSub; import me.kavin.piped.utils.obj.db.User; import me.kavin.piped.utils.obj.db.Video; public class DatabaseHelper { public static final User getUserFromSession(Session s, String session) { CriteriaBuilder cb = s.getCriteriaBuilder(); CriteriaQuery cr = cb.createQuery(User.class); Root root = cr.from(User.class); cr.select(root).where(root.get("sessionId").in(session)); return s.createQuery(cr).uniqueResult(); } public static final User getUserFromSessionWithSubscribed(Session s, String session) { CriteriaBuilder cb = s.getCriteriaBuilder(); CriteriaQuery cr = cb.createQuery(User.class); Root root = cr.from(User.class); root.fetch("subscribed_ids", JoinType.LEFT); cr.select(root).where(root.get("sessionId").in(session)); return s.createQuery(cr).uniqueResult(); } public static final Channel getChannelFromId(Session s, String id) { CriteriaBuilder cb = s.getCriteriaBuilder(); CriteriaQuery cr = cb.createQuery(Channel.class); Root root = cr.from(Channel.class); cr.select(root).where(root.get("uploader_id").in(id)); return s.createQuery(cr).uniqueResult(); } public static final List getChannelFromIds(Session s, List id) { CriteriaBuilder cb = s.getCriteriaBuilder(); CriteriaQuery cr = cb.createQuery(Channel.class); Root root = cr.from(Channel.class); cr.select(root).where(root.get("uploader_id").in(id)); return s.createQuery(cr).getResultList(); } public static final List