mirror of
https://github.com/Athou/commafeed.git
synced 2026-03-21 21:37:29 +00:00
index for entry lookup
This commit is contained in:
@@ -23,18 +23,20 @@ public class FeedEntryDAO extends GenericDAO<FeedEntry> {
|
||||
|
||||
protected static final Logger log = LoggerFactory.getLogger(FeedEntryDAO.class);
|
||||
|
||||
public FeedEntry findExisting(String guid, String url, Long feedId) {
|
||||
public Long findExisting(String guid, Long feedId) {
|
||||
|
||||
CriteriaQuery<FeedEntry> query = builder.createQuery(getType());
|
||||
CriteriaQuery<Long> query = builder.createQuery(Long.class);
|
||||
Root<FeedEntry> root = query.from(getType());
|
||||
query.select(root.get(FeedEntry_.id));
|
||||
|
||||
Predicate p1 = builder.equal(root.get(FeedEntry_.guidHash), DigestUtils.sha1Hex(guid));
|
||||
Predicate p2 = builder.equal(root.get(FeedEntry_.url), url);
|
||||
Predicate p3 = builder.equal(root.get(FeedEntry_.feed).get(Feed_.id), feedId);
|
||||
Predicate p2 = builder.equal(root.get(FeedEntry_.feed).get(Feed_.id), feedId);
|
||||
|
||||
query.where(p1, p2, p3);
|
||||
query.where(p1, p2);
|
||||
|
||||
List<FeedEntry> list = em.createQuery(query).getResultList();
|
||||
TypedQuery<Long> q = em.createQuery(query);
|
||||
limit(q, 0, 1);
|
||||
List<Long> list = q.getResultList();
|
||||
return Iterables.getFirst(list, null);
|
||||
}
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@ public class FeedUpdateService {
|
||||
*/
|
||||
public void updateEntry(Feed feed, FeedEntry entry, List<FeedSubscription> subscriptions) {
|
||||
|
||||
FeedEntry existing = feedEntryDAO.findExisting(entry.getGuid(), entry.getUrl(), feed.getId());
|
||||
Long existing = feedEntryDAO.findExisting(entry.getGuid(), feed.getId());
|
||||
if (existing != null) {
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user