From ba496c139587522472a2948919811e85f2ed226a Mon Sep 17 00:00:00 2001 From: Athou Date: Tue, 10 Sep 2024 11:16:25 +0200 Subject: [PATCH] no longer fetch feeds without subscriptions --- .../java/com/commafeed/backend/dao/FeedDAO.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/commafeed-server/src/main/java/com/commafeed/backend/dao/FeedDAO.java b/commafeed-server/src/main/java/com/commafeed/backend/dao/FeedDAO.java index ac1349b4..903cdf59 100644 --- a/commafeed-server/src/main/java/com/commafeed/backend/dao/FeedDAO.java +++ b/commafeed-server/src/main/java/com/commafeed/backend/dao/FeedDAO.java @@ -29,13 +29,15 @@ public class FeedDAO extends GenericDAO { } public List findNextUpdatable(int count, Instant lastLoginThreshold) { - JPAQuery query = query().selectFrom(FEED).where(FEED.disabledUntil.isNull().or(FEED.disabledUntil.lt(Instant.now()))); + JPAQuery query = query().selectFrom(FEED) + .distinct() + // join on subscriptions to only refresh feeds that have subscribers + .join(SUBSCRIPTION) + .on(SUBSCRIPTION.feed.eq(FEED)) + .where(FEED.disabledUntil.isNull().or(FEED.disabledUntil.lt(Instant.now()))); + if (lastLoginThreshold != null) { - query.where(JPAExpressions.selectOne() - .from(SUBSCRIPTION) - .join(SUBSCRIPTION.user) - .where(SUBSCRIPTION.feed.id.eq(FEED.id), SUBSCRIPTION.user.lastLogin.gt(lastLoginThreshold)) - .exists()); + query.join(SUBSCRIPTION.user).where(SUBSCRIPTION.user.lastLogin.gt(lastLoginThreshold)); } return query.orderBy(FEED.disabledUntil.asc()).limit(count).fetch();