From 06f7bdb353864fc29a5d17240a228d4e6d570333 Mon Sep 17 00:00:00 2001 From: theanonymousexyz Date: Sat, 23 Apr 2022 19:18:24 +0200 Subject: [PATCH] Fix pruneUnusedPlaylistVideos() --- .../me/kavin/piped/utils/ResponseHelper.java | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/main/java/me/kavin/piped/utils/ResponseHelper.java b/src/main/java/me/kavin/piped/utils/ResponseHelper.java index e568e91..e2a85f4 100644 --- a/src/main/java/me/kavin/piped/utils/ResponseHelper.java +++ b/src/main/java/me/kavin/piped/utils/ResponseHelper.java @@ -651,6 +651,7 @@ public class ResponseHelper { plQuery.from(me.kavin.piped.utils.obj.db.Playlist.class); plQuery.select(plRoot).where(plCriteria.equal(plRoot.get("owner"), user.getId())); List playlists = s.createQuery(plQuery).getResultList(); + Iterator iter = playlists.iterator(); while (iter.hasNext()) @@ -660,11 +661,12 @@ public class ResponseHelper { s.getTransaction().begin(); s.getTransaction().commit(); + + Multithreading.runAsync(() -> pruneUnusedPlaylistVideos()); } catch (Exception e) { return Constants.mapper.writeValueAsBytes(new ErrorResponse(ExceptionUtils.getStackTrace(e), e.getMessage())); } - Multithreading.runAsync(() -> pruneUnusedPlaylistVideos()); return Constants.mapper.writeValueAsBytes(new DeleteUserResponse(user.getUsername())); } } @@ -950,6 +952,7 @@ public class ResponseHelper { Multithreading.runAsync(() -> { try (Session s = DatabaseSessionFactory.createSession()) { var channels = DatabaseHelper.getChannelsFromIds(s, Arrays.asList(channelIds)); + outer: for (String channelId : channelIds) { for (var channel : channels) @@ -1213,7 +1216,9 @@ public class ResponseHelper { try (Session s = DatabaseSessionFactory.createSession()) { CriteriaQuery plQuery = s.getCriteriaBuilder().createQuery(me.kavin.piped.utils.obj.db.Playlist.class); - plQuery.select(plQuery.from(me.kavin.piped.utils.obj.db.Playlist.class)); + Root plRoot = plQuery.from(me.kavin.piped.utils.obj.db.Playlist.class); + //plRoot.fetch("videos", JoinType.INNER); + plQuery.select(plRoot); List playlists = s.createQuery(plQuery).getResultList(); CriteriaQuery pvQuery = s.getCriteriaBuilder().createQuery(PlaylistVideo.class); @@ -1222,25 +1227,23 @@ public class ResponseHelper { Iterator pvIter = playlistVideos.iterator(); + outer: while (pvIter.hasNext()) { PlaylistVideo pv = pvIter.next(); - boolean exists = false; for (me.kavin.piped.utils.obj.db.Playlist pl : playlists) { - exists = false; - for (PlaylistVideo plpv : pl.getVideos()) { if (plpv.getId().equals(pv.getId())) { - exists = true; - break; + continue outer; } } - - if (exists) break; } - if (!exists) s.delete(pv); + s.delete(pv); } + + s.getTransaction().begin(); + s.getTransaction().commit(); } }