diff --git a/reader/feed/handler.go b/reader/feed/handler.go index c1f42ae6..4801d128 100644 --- a/reader/feed/handler.go +++ b/reader/feed/handler.go @@ -171,7 +171,8 @@ func (h *Handler) RefreshFeed(userID, feedID int64) error { originalFeed.EtagHeader = response.ETag originalFeed.LastModifiedHeader = response.LastModified - if err := h.store.UpdateEntries(originalFeed.UserID, originalFeed.ID, subscription.Entries); err != nil { + // Note: We don't update existing entries when the crawler is enabled (we crawl only inexisting entries). + if err := h.store.UpdateEntries(originalFeed.UserID, originalFeed.ID, subscription.Entries, !originalFeed.Crawler); err != nil { return err } diff --git a/storage/entry.go b/storage/entry.go index d1e8798e..5ff5f5c8 100644 --- a/storage/entry.go +++ b/storage/entry.go @@ -116,15 +116,17 @@ func (s *Storage) entryExists(entry *model.Entry) bool { return result >= 1 } -// UpdateEntries update a list of entries while refreshing a feed. -func (s *Storage) UpdateEntries(userID, feedID int64, entries model.Entries) (err error) { +// UpdateEntries updates a list of entries while refreshing a feed. +func (s *Storage) UpdateEntries(userID, feedID int64, entries model.Entries, updateExistingEntries bool) (err error) { var entryHashes []string for _, entry := range entries { entry.UserID = userID entry.FeedID = feedID if s.entryExists(entry) { - err = s.updateEntry(entry) + if updateExistingEntries { + err = s.updateEntry(entry) + } } else { err = s.createEntry(entry) }