From 9c1c165fb258a0c4abf287b1fac57d027ff0d638 Mon Sep 17 00:00:00 2001 From: Kavin <20838718+FireMasterK@users.noreply.github.com> Date: Mon, 11 Apr 2022 00:02:25 +0100 Subject: [PATCH] Significantly speed up import process. (#242) --- src/main/java/me/kavin/piped/Main.java | 8 +- .../me/kavin/piped/utils/DatabaseHelper.java | 13 ++ .../me/kavin/piped/utils/Multithreading.java | 2 +- .../me/kavin/piped/utils/ResponseHelper.java | 149 +++++++----------- .../me/kavin/piped/utils/obj/db/User.java | 28 ++-- 5 files changed, 85 insertions(+), 115 deletions(-) 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