From 771999c603da4930154133bab771e83c9b8ec134 Mon Sep 17 00:00:00 2001 From: Jordan Petridis Date: Wed, 18 Apr 2018 07:35:53 +0300 Subject: [PATCH] h-data: Move some functions from pipeline to feed module. --- hammond-data/src/feed.rs | 28 ++++++++++++++++++++++-- hammond-data/src/models/new_source.rs | 2 -- hammond-data/src/pipeline.rs | 31 +-------------------------- 3 files changed, 27 insertions(+), 34 deletions(-) diff --git a/hammond-data/src/feed.rs b/hammond-data/src/feed.rs index a05e532..078c79e 100644 --- a/hammond-data/src/feed.rs +++ b/hammond-data/src/feed.rs @@ -8,8 +8,7 @@ use rss; use dbqueries; use errors::DataError; use models::{Index, IndexState, Update}; -use models::{NewPodcast, Podcast}; -use pipeline::*; +use models::{NewEpisode, NewEpisodeMinimal, NewPodcast, Podcast}; /// Wrapper struct that hold a `Source` id and the `rss::Channel` /// that corresponds to the `Source.uri` field. @@ -86,6 +85,31 @@ impl Feed { } } +fn glue(item: &rss::Item, id: i32) -> Result, DataError> { + NewEpisodeMinimal::new(item, id).and_then(move |ep| determine_ep_state(ep, item)) +} + +fn determine_ep_state( + ep: NewEpisodeMinimal, + item: &rss::Item, +) -> Result, DataError> { + // Check if feed exists + let exists = dbqueries::episode_exists(ep.title(), ep.podcast_id())?; + + if !exists { + Ok(IndexState::Index(ep.into_new_episode(item))) + } else { + let old = dbqueries::get_episode_minimal_from_pk(ep.title(), ep.podcast_id())?; + let rowid = old.rowid(); + + if ep != old { + Ok(IndexState::Update((ep.into_new_episode(item), rowid))) + } else { + Ok(IndexState::NotChanged) + } + } +} + #[cfg(test)] mod tests { use rss::Channel; diff --git a/hammond-data/src/models/new_source.rs b/hammond-data/src/models/new_source.rs index 881b008..a5cf92c 100644 --- a/hammond-data/src/models/new_source.rs +++ b/hammond-data/src/models/new_source.rs @@ -1,5 +1,3 @@ -#![allow(unused_mut)] - use diesel; use diesel::prelude::*; use url::Url; diff --git a/hammond-data/src/pipeline.rs b/hammond-data/src/pipeline.rs index d477116..6d27e5b 100644 --- a/hammond-data/src/pipeline.rs +++ b/hammond-data/src/pipeline.rs @@ -1,8 +1,6 @@ // FIXME: //! Docs. -#![allow(unused)] - use futures::future::*; use futures::prelude::*; use futures::stream::*; @@ -15,11 +13,8 @@ use tokio_core::reactor::Core; use num_cpus; use rayon; use rayon_futures::ScopeFutureExt; -use rss; -use dbqueries; use errors::DataError; -use models::{IndexState, NewEpisode, NewEpisodeMinimal}; use Source; // use std::sync::{Arc, Mutex}; @@ -88,35 +83,11 @@ where core.run(p).map(|_| ()) } -fn determine_ep_state( - ep: NewEpisodeMinimal, - item: &rss::Item, -) -> Result, DataError> { - // Check if feed exists - let exists = dbqueries::episode_exists(ep.title(), ep.podcast_id())?; - - if !exists { - Ok(IndexState::Index(ep.into_new_episode(item))) - } else { - let old = dbqueries::get_episode_minimal_from_pk(ep.title(), ep.podcast_id())?; - let rowid = old.rowid(); - - if ep != old { - Ok(IndexState::Update((ep.into_new_episode(item), rowid))) - } else { - Ok(IndexState::NotChanged) - } - } -} - -pub(crate) fn glue(item: &rss::Item, id: i32) -> Result, DataError> { - NewEpisodeMinimal::new(item, id).and_then(move |ep| determine_ep_state(ep, item)) -} - #[cfg(test)] mod tests { use super::*; use database::truncate_db; + use dbqueries; use Source; // (path, url) tuples.