hammond-data::utils: Small and minor refactor.

This commit is contained in:
Jordan Petridis 2017-12-31 01:42:28 +02:00
parent e727734443
commit 785a5f80c6
No known key found for this signature in database
GPG Key ID: CEABAD9F5683B9A6
2 changed files with 20 additions and 31 deletions

View File

@ -74,7 +74,7 @@ impl Feed {
fn parse_channel_items(&self, pd: &Podcast) -> Vec<NewEpisode> { fn parse_channel_items(&self, pd: &Podcast) -> Vec<NewEpisode> {
let items = self.channel.items(); let items = self.channel.items();
let new_episodes: Vec<_> = items let new_episodes: Vec<_> = items
.into_par_iter() .par_iter()
.filter_map(|item| parser::new_episode(item, *pd.id()).ok()) .filter_map(|item| parser::new_episode(item, *pd.id()).ok())
.collect(); .collect();

View File

@ -18,43 +18,38 @@ fn download_checker() -> Result<()> {
episodes episodes
.into_par_iter() .into_par_iter()
.for_each(|mut ep| checker_helper(&mut ep)); .filter(|ep| !Path::new(ep.local_uri().unwrap()).exists())
.for_each(|mut ep| {
ep.set_local_uri(None);
if let Err(err) = ep.save() {
error!("Error while trying to update episode: {:#?}", ep);
error!("Error: {}", err);
};
});
Ok(()) Ok(())
} }
fn checker_helper(ep: &mut EpisodeCleanerQuery) {
if !Path::new(ep.local_uri().unwrap()).exists() {
ep.set_local_uri(None);
let res = ep.save();
if let Err(err) = res {
error!("Error while trying to update episode: {:#?}", ep);
error!("Error: {}", err);
};
}
}
fn played_cleaner() -> Result<()> { fn played_cleaner() -> Result<()> {
let episodes = dbqueries::get_played_cleaner_episodes()?; let mut episodes = dbqueries::get_played_cleaner_episodes()?;
let now_utc = Utc::now().timestamp() as i32; let now_utc = Utc::now().timestamp() as i32;
episodes.into_par_iter().for_each(|mut ep| { episodes
if ep.local_uri().is_some() && ep.played().is_some() { .par_iter_mut()
let played = ep.played().unwrap(); .filter(|ep| ep.local_uri().is_some() && ep.played().is_some())
.for_each(|ep| {
// TODO: expose a config and a user set option. // TODO: expose a config and a user set option.
// Chnage the test too when exposed // Chnage the test too when exposed
let limit = played + 172_800; // add 2days in seconds let limit = ep.played().unwrap() + 172_800; // add 2days in seconds
if now_utc > limit { if now_utc > limit {
let e = delete_local_content(&mut ep); if let Err(err) = delete_local_content(ep) {
if let Err(err) = e {
error!("Error while trying to delete file: {:?}", ep.local_uri()); error!("Error while trying to delete file: {:?}", ep.local_uri());
error!("Error: {}", err); error!("Error: {}", err);
} else { } else {
info!("Episode {:?} was deleted succesfully.", ep.local_uri()); info!("Episode {:?} was deleted succesfully.", ep.local_uri());
}; };
} }
} });
});
Ok(()) Ok(())
} }
@ -186,20 +181,14 @@ mod tests {
Some(valid_path.to_str().unwrap()), Some(valid_path.to_str().unwrap()),
episodes.first().unwrap().local_uri() episodes.first().unwrap().local_uri()
); );
}
#[test]
fn test_checker_helper() {
let _tmp_dir = helper_db(); let _tmp_dir = helper_db();
let mut episode = { download_checker().unwrap();
let episode = {
let db = connection(); let db = connection();
let con = db.get().unwrap(); let con = db.get().unwrap();
dbqueries::get_episode_from_pk(&con, "bar_baz", 1) dbqueries::get_episode_from_pk(&con, "bar_baz", 1).unwrap()
.unwrap()
.into()
}; };
checker_helper(&mut episode);
assert!(episode.local_uri().is_none()); assert!(episode.local_uri().is_none());
} }