mirror of
https://github.com/Athou/commafeed.git
synced 2026-03-21 21:37:29 +00:00
faster feed cleanup
This commit is contained in:
@@ -33,7 +33,7 @@ public class DatabaseCleaner {
|
|||||||
long total = 0;
|
long total = 0;
|
||||||
int deleted = -1;
|
int deleted = -1;
|
||||||
do {
|
do {
|
||||||
deleted = feedDAO.deleteWithoutSubscriptions(1);
|
deleted = feedDAO.deleteWithoutSubscriptions(10);
|
||||||
total += deleted;
|
total += deleted;
|
||||||
log.info("removed {} feeds without subscriptions", total);
|
log.info("removed {} feeds without subscriptions", total);
|
||||||
} while (deleted != 0);
|
} while (deleted != 0);
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import java.util.Date;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.ejb.Stateless;
|
import javax.ejb.Stateless;
|
||||||
|
import javax.persistence.Query;
|
||||||
import javax.persistence.TypedQuery;
|
import javax.persistence.TypedQuery;
|
||||||
import javax.persistence.criteria.CriteriaQuery;
|
import javax.persistence.criteria.CriteriaQuery;
|
||||||
import javax.persistence.criteria.JoinType;
|
import javax.persistence.criteria.JoinType;
|
||||||
@@ -107,7 +108,14 @@ public class FeedDAO extends GenericDAO<Feed> {
|
|||||||
|
|
||||||
List<Feed> list = q.getResultList();
|
List<Feed> list = q.getResultList();
|
||||||
int deleted = list.size();
|
int deleted = list.size();
|
||||||
delete(list);
|
|
||||||
|
for (Feed feed : list) {
|
||||||
|
Query relationshipDeleteQuery = em
|
||||||
|
.createNamedQuery("Feed.deleteEntryRelationships");
|
||||||
|
relationshipDeleteQuery.setParameter("feedId", feed.getId());
|
||||||
|
relationshipDeleteQuery.executeUpdate();
|
||||||
|
delete(feed);
|
||||||
|
}
|
||||||
return deleted;
|
return deleted;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import java.util.Date;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import javax.persistence.Cacheable;
|
import javax.persistence.Cacheable;
|
||||||
import javax.persistence.CascadeType;
|
|
||||||
import javax.persistence.Column;
|
import javax.persistence.Column;
|
||||||
import javax.persistence.Entity;
|
import javax.persistence.Entity;
|
||||||
import javax.persistence.OneToMany;
|
import javax.persistence.OneToMany;
|
||||||
@@ -108,7 +107,7 @@ public class Feed extends AbstractModel {
|
|||||||
@Column(length = 40)
|
@Column(length = 40)
|
||||||
private String lastContentHash;
|
private String lastContentHash;
|
||||||
|
|
||||||
@OneToMany(mappedBy = "feed", cascade = CascadeType.REMOVE)
|
@OneToMany(mappedBy = "feed")
|
||||||
private Set<FeedFeedEntry> entryRelationships;
|
private Set<FeedFeedEntry> entryRelationships;
|
||||||
|
|
||||||
@OneToMany(mappedBy = "feed")
|
@OneToMany(mappedBy = "feed")
|
||||||
|
|||||||
@@ -17,4 +17,8 @@
|
|||||||
<query>delete from FeedEntryStatus s where s.id in :ids</query>
|
<query>delete from FeedEntryStatus s where s.id in :ids</query>
|
||||||
</named-query>
|
</named-query>
|
||||||
|
|
||||||
|
<named-query name="Feed.deleteEntryRelationships">
|
||||||
|
<query>delete from FeedFeedEntry ffe where ffe.feed.id = :feedId</query>
|
||||||
|
</named-query>
|
||||||
|
|
||||||
</entity-mappings>
|
</entity-mappings>
|
||||||
Reference in New Issue
Block a user