package me.kavin.piped.utils; 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; import org.hibernate.Session; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.JoinType; import javax.persistence.criteria.Root; 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(cb.equal(root.get("sessionId"), 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.INNER); cr.select(root).where(cb.equal(root.get("sessionId"), 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(cb.equal(root.get("uploader_id"), id)); return s.createQuery(cr).uniqueResult(); } public static final Video getVideoFromId(Session s, String id) { CriteriaBuilder cb = s.getCriteriaBuilder(); CriteriaQuery