From 9cc5307c594d922ca39ca9d45583c40b6f640066 Mon Sep 17 00:00:00 2001 From: Joe Date: Thu, 25 Dec 2025 09:48:02 -0800 Subject: [PATCH] make posted return option, fix sorting --- src/lib.rs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index dc22b18..14fd0fd 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -22,7 +22,6 @@ const ZULIP_INTERVAL: Duration = Duration::from_millis(250); const ZULIP_MESSAGE_CUTOFF: usize = 700; const LAST_FETCHED: DateTime = DateTime::from_timestamp_nanos(0); -const ONE_YEAR: Duration = Duration::from_secs(365 * 24 * 60 * 60); pub struct BlogdorTheAggregator { db: SqlitePool, @@ -252,12 +251,12 @@ impl BlogdorTheAggregator { } trait Posted { - fn posted(&self) -> DateTime; + fn posted(&self) -> Option>; } impl Posted for feed_rs::model::Entry { - fn posted(&self) -> DateTime { - self.published.or(self.updated).unwrap_or(LAST_FETCHED) + fn posted(&self) -> Option> { + self.published.or(self.updated) } } @@ -291,9 +290,9 @@ async fn check_feed( .map_err(|e| format!("could not get bytes from response from {url}, got {e}"))?; let mut feed = parse(feed.reader()).map_err(|e| format!("could not parse feed from {url}, got {e}"))?; - feed.entries.sort_by_key(|e| e.posted()); - for post in feed.entries.into_iter().rev().take(5) { - if post.posted() > last_fetched { + feed.entries.sort_by_key(|e| std::cmp::Reverse(e.posted())); + for post in feed.entries.into_iter().take(5) { + if post.posted().unwrap_or(LAST_FETCHED) > last_fetched { let entry = FeedEntry { post_url: post .links