Skip to content

Commit

Permalink
fix: handle errors
Browse files Browse the repository at this point in the history
  • Loading branch information
taevel02 committed Feb 11, 2024
1 parent 01b6591 commit 07abc4e
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 16 deletions.
6 changes: 6 additions & 0 deletions src-tauri/src/error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,12 @@ pub enum Error {
#[error("failed to parse syndication feed")]
SyndicationParsingFailure,

#[error("failed to fetch feed: {0}")]
FetchFeedFailure(String),

#[error("failed to fetch feed items: {0}")]
FetchFeedItemsFailure(String),

#[error("empty string")]
EmptyString,

Expand Down
26 changes: 10 additions & 16 deletions src-tauri/src/producer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@ use crate::{
syndication::fetch_feed_items,
};

pub fn create_new_items(db: &Connection, proxy: Option<&str>) -> Result<Vec<ItemToCreate>, String> {
use crate::error::{Error, Result};

pub fn create_new_items(db: &Connection, proxy: Option<&str>) -> Result<Vec<ItemToCreate>> {
let pairs = get_links_to_check(db);

let mut inserted = vec![];
Expand All @@ -25,7 +27,7 @@ pub fn create_new_items(db: &Connection, proxy: Option<&str>) -> Result<Vec<Item
if most_recent_items.is_none() {
most_recent_items = match get_most_recent_items(db) {
Ok(items) => Some(items),
Err(err) => return Err(format!("Error fetching most recent items: {}", err)),
Err(err) => return Err(Error::FetchFeedItemsFailure(err.to_string())),
};
}
}
Expand All @@ -46,7 +48,7 @@ pub fn create_new_items(db: &Connection, proxy: Option<&str>) -> Result<Vec<Item
items.sort_by_key(|x| x.published_at);
inserted.extend(insert_new_items(db, feed, &items));
}
Err(err) => return Err(format!("Error fetching feed items: {}", err)),
Err(err) => return Err(Error::FetchFeedItemsFailure(err.to_string())),
}
}

Expand Down Expand Up @@ -107,13 +109,10 @@ fn insert_new_items(db: &Connection, feed: i32, items: &[RawItem]) -> Vec<ItemTo
inserted
}

fn get_most_recent_items(db: &Connection) -> Result<HashMap<i32, DateTime<FixedOffset>>, String> {
fn get_most_recent_items(db: &Connection) -> Result<HashMap<i32, DateTime<FixedOffset>>> {
let mut most_recent_items = HashMap::new();

let feed_ids = match get_all_feed_ids(db) {
Ok(ids) => ids,
Err(err) => return Err(format!("Failed to fetch feed ids: {}", err)),
};
let feed_ids = get_all_feed_ids(db)?;

for feed_id in feed_ids {
let opt = ItemReadOption {
Expand All @@ -132,21 +131,16 @@ fn get_most_recent_items(db: &Connection) -> Result<HashMap<i32, DateTime<FixedO
most_recent_items.insert(item.feed.id, item.published_at);
}
}
Err(err) => {
return Err(format!(
"Failed to fetch items for feed {}: {}",
feed_id, err
))
}
Err(err) => return Err(Error::InvalidValue(err.to_string())),
}
}

Ok(most_recent_items)
}

fn get_all_feed_ids(db: &Connection) -> Result<Vec<i32>, String> {
fn get_all_feed_ids(db: &Connection) -> Result<Vec<i32>> {
match feeds::read_all(db) {
Ok(feeds) => Ok(feeds.iter().map(|x| x.id).collect()),
Err(err) => Err(err.to_string()),
Err(err) => Err(Error::FetchFeedFailure(err.to_string())),
}
}

0 comments on commit 07abc4e

Please sign in to comment.