Dbquerries: add EXIST querries for podcast and episode.

This commit is contained in:
Jordan Petridis 2018-01-16 17:26:41 +02:00
parent fa03c20b00
commit 978e5a61f6
No known key found for this signature in database
GPG Key ID: CEABAD9F5683B9A6
3 changed files with 32 additions and 9 deletions

View File

@ -257,6 +257,33 @@ pub fn delete_podcast_episodes(con: &SqliteConnection, parent_id: i32) -> QueryR
diesel::delete(episode.filter(podcast_id.eq(parent_id))).execute(&*con)
}
pub fn podcast_exists(source_id_: i32) -> Result<bool> {
use schema::podcast::dsl::*;
use diesel::select;
use diesel::dsl::exists;
let db = connection();
let con = db.get()?;
select(exists(podcast.filter(source_id.eq(source_id_))))
.get_result(&*con)
.map_err(From::from)
}
#[cfg_attr(rustfmt, rustfmt_skip)]
pub fn episode_exists(title_: &str, podcast_id_: i32) -> Result<bool> {
use schema::episode::dsl::*;
use diesel::select;
use diesel::dsl::exists;
let db = connection();
let con = db.get()?;
select(exists(episode.filter(podcast_id.eq(podcast_id_)).filter(title.eq(title_))))
.get_result(&*con)
.map_err(From::from)
}
pub fn update_none_to_played_now(parent: &Podcast) -> Result<usize> {
use schema::episode::dsl::*;

View File

@ -1,4 +1,4 @@
use diesel::result;
use diesel;
use diesel_migrations::RunMigrationsError;
use rss;
use reqwest;
@ -11,7 +11,7 @@ use std::io;
error_chain! {
foreign_links {
R2D2Error(r2d2::Error);
DieselResultError(result::Error);
DieselResultError(diesel::result::Error);
DieselMigrationError(RunMigrationsError);
RSSError(rss::Error);
ReqError(reqwest::Error);

View File

@ -93,13 +93,9 @@ impl Feed {
// This could also retrurn a FutureResult<Vec<FutureNewEpisode, Error>>, Error> Instead
#[allow(dead_code)]
fn parse_channel_items_future(
&self,
pd: &Podcast,
) -> Box<Vec<FutureResult<NewEpisode, Error>>> {
let items = self.channel.items();
let episodes: Vec<_> = items
fn parse_episodes_future(&self, pd: &Podcast) -> Box<Vec<FutureResult<NewEpisode, Error>>> {
let episodes = self.channel
.items()
.par_iter()
.map(|item| result(parser::new_episode(item, pd.id())))
.collect();