From 034e46700ccb18096fbb20e20e85c836deec7cd9 Mon Sep 17 00:00:00 2001 From: Davide Masserut Date: Wed, 1 Mar 2023 17:58:01 +0100 Subject: [PATCH] Process older entries first Feed entries are usually ordered from most to least recent. Processing older entries first ensures that their creation timestamp is lower than that of newer entries. This is useful when we order by creation, because then we get a consistent timeline. --- reader/processor/processor.go | 5 ++++- tests/entry_test.go | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/reader/processor/processor.go b/reader/processor/processor.go index e0bdf36d..67f50b28 100644 --- a/reader/processor/processor.go +++ b/reader/processor/processor.go @@ -44,7 +44,10 @@ func ProcessFeedEntries(store *storage.Storage, feed *model.Feed, user *model.Us // array used for bulk push entriesToPush := model.Entries{} - for _, entry := range feed.Entries { + // Process older entries first + for i := len(feed.Entries) - 1; i >= 0; i-- { + entry := feed.Entries[i] + logger.Debug("[Processor] Processing entry %q from feed %q", entry.URL, feed.FeedURL) if isBlockedEntry(feed, entry) || !isAllowedEntry(feed, entry) { diff --git a/tests/entry_test.go b/tests/entry_test.go index c25019fb..97ce4cbe 100644 --- a/tests/entry_test.go +++ b/tests/entry_test.go @@ -43,7 +43,7 @@ func TestGetAllFeedEntries(t *testing.T) { t.Fatal(`Filtered entries should be different than previous results`) } - filteredResultsByEntryID, err := client.FeedEntries(feed.ID, &miniflux.Filter{BeforeEntryID: allResults.Entries[0].ID}) + filteredResultsByEntryID, err := client.FeedEntries(feed.ID, &miniflux.Filter{AfterEntryID: allResults.Entries[0].ID}) if err != nil { t.Fatal(err) } @@ -83,7 +83,7 @@ func TestGetAllCategoryEntries(t *testing.T) { t.Fatal(`Filtered entries should be different than previous results`) } - filteredResultsByEntryID, err := client.CategoryEntries(category.ID, &miniflux.Filter{BeforeEntryID: allResults.Entries[0].ID}) + filteredResultsByEntryID, err := client.CategoryEntries(category.ID, &miniflux.Filter{AfterEntryID: allResults.Entries[0].ID}) if err != nil { t.Fatal(err) }