From f2e00afbb95955c1a29b192490409561f56e6b98 Mon Sep 17 00:00:00 2001 From: Julia Lange Date: Wed, 4 Feb 2026 13:52:22 -0800 Subject: [PATCH] Adding fetch_item, but need to expand what an ID can be --- koucha/src/db.rs | 2 ++ koucha/src/db/feed_channel.rs | 1 - koucha/src/db/feed_item.rs | 56 +++++++++++++++++++++++++++++++++++ koucha/src/fetch.rs | 2 +- 4 files changed, 59 insertions(+), 2 deletions(-) create mode 100644 koucha/src/db/feed_item.rs diff --git a/koucha/src/db.rs b/koucha/src/db.rs index 2456bd9..6914cfa 100644 --- a/koucha/src/db.rs +++ b/koucha/src/db.rs @@ -4,6 +4,8 @@ mod feed; pub use feed::Feed; mod feed_channel; pub use feed_channel::FeedChannel; +mod feed_item; +pub use feed_item::FeedItem; mod channel; pub use channel::Channel; mod item; diff --git a/koucha/src/db/feed_channel.rs b/koucha/src/db/feed_channel.rs index 0640555..f8a3870 100644 --- a/koucha/src/db/feed_channel.rs +++ b/koucha/src/db/feed_channel.rs @@ -72,7 +72,6 @@ impl FeedChannel { ).execute(&pool.0).await?; Ok(()) } - } #[cfg(test)] diff --git a/koucha/src/db/feed_item.rs b/koucha/src/db/feed_item.rs new file mode 100644 index 0000000..052e8a3 --- /dev/null +++ b/koucha/src/db/feed_item.rs @@ -0,0 +1,56 @@ +use chrono::{DateTime, Utc}; +use crate::{ + Result, + AdapterPool, + db::{ + ItemId, + FeedId, + }, + score::{ + TimedScore, + UnparsedTimedScore, + }, +}; + +pub struct UnparsedFeedItem { + pub item_id: i64, + pub feed_id: i64, + pub score: i64, + pub last_updated: String, + pub boosted_at: Option, +} +impl UnparsedFeedItem { + pub fn parse(self) -> Result { + Ok(FeedItem { + item_id: ItemId(self.item_id), + feed_id: FeedId(self.feed_id), + score: (UnparsedTimedScore { + value: self.score, + last_updated: DateTime::parse_from_rfc2822(&self.last_updated)? + .with_timezone(&Utc), + last_boosted: self.boosted_at.as_deref() + .map(DateTime::parse_from_rfc2822) + .transpose()? + .map(|dt| dt.with_timezone(&Utc)), + }).parse(), + }) + } +} + +pub struct FeedItem { + item_id: ItemId, + feed_id: FeedId, + score: TimedScore, +} + +impl FeedItem { + // async fn boost(pool: &AdapterPool, boost: Boost) -> Result<()> { + // self.boost_at(pool, boost, Utc::now()).await + // } + // + // async fn boost_at( + // &self, pool: &AdapterPool, boost: Boost, boost_at: DateTime + // ) -> Result<()> { + // + // } +} diff --git a/koucha/src/fetch.rs b/koucha/src/fetch.rs index 532b4fe..a25b9de 100644 --- a/koucha/src/fetch.rs +++ b/koucha/src/fetch.rs @@ -1,6 +1,6 @@ use crate::{ Result, - db::Channel, + db::{Channel, ChannelId}, AdapterClient, }; use reqwest::Url;