diff --git a/src/main/java/me/kavin/piped/Main.java b/src/main/java/me/kavin/piped/Main.java index 7a03911..f1bd8e9 100644 --- a/src/main/java/me/kavin/piped/Main.java +++ b/src/main/java/me/kavin/piped/Main.java @@ -49,13 +49,7 @@ public class Main { for (PubSub pubsub : pubSubList) if (pubsub != null) - Multithreading.runAsyncLimitedPubSub(() -> { - try (Session sess = DatabaseSessionFactory.createSession()) { - ResponseHelper.subscribePubSub(pubsub.getId(), sess); - } catch (Exception e) { - e.printStackTrace(); - } - }); + Multithreading.runAsyncLimitedPubSub(() -> ResponseHelper.subscribePubSub(pubsub.getId())); } catch (Exception e) { e.printStackTrace(); diff --git a/src/main/java/me/kavin/piped/utils/DatabaseHelper.java b/src/main/java/me/kavin/piped/utils/DatabaseHelper.java index 9dce955..d70bf05 100644 --- a/src/main/java/me/kavin/piped/utils/DatabaseHelper.java +++ b/src/main/java/me/kavin/piped/utils/DatabaseHelper.java @@ -1,18 +1,21 @@ package me.kavin.piped.utils; import me.kavin.piped.utils.obj.db.*; +import org.hibernate.FlushMode; import org.hibernate.Session; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.JoinType; import javax.persistence.criteria.Root; +import java.util.List; import java.util.UUID; public class DatabaseHelper { public static User getUserFromSession(String session) { try (Session s = DatabaseSessionFactory.createSession()) { + s.setHibernateFlushMode(FlushMode.MANUAL); CriteriaBuilder cb = s.getCriteriaBuilder(); CriteriaQuery cr = cb.createQuery(User.class); Root root = cr.from(User.class); @@ -24,6 +27,7 @@ public class DatabaseHelper { public static User getUserFromSessionWithSubscribed(String session) { try (Session s = DatabaseSessionFactory.createSession()) { + s.setHibernateFlushMode(FlushMode.MANUAL); CriteriaBuilder cb = s.getCriteriaBuilder(); CriteriaQuery cr = cb.createQuery(User.class); Root root = cr.from(User.class); @@ -43,6 +47,15 @@ public class DatabaseHelper { return s.createQuery(cr).uniqueResult(); } + public static List getChannelsFromIds(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).list(); + } + public static Video getVideoFromId(Session s, String id) { CriteriaBuilder cb = s.getCriteriaBuilder(); CriteriaQuery