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();