From c942e357b7da36232b2cde732bd62e5893bc92ba Mon Sep 17 00:00:00 2001 From: Jordan Petridis Date: Tue, 31 Oct 2017 13:10:36 +0200 Subject: [PATCH] Moved a batch update into a db transaction. --- hammond-data/src/dbqueries.rs | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/hammond-data/src/dbqueries.rs b/hammond-data/src/dbqueries.rs index 80d9b00..9588505 100644 --- a/hammond-data/src/dbqueries.rs +++ b/hammond-data/src/dbqueries.rs @@ -7,7 +7,9 @@ use index_feed::Database; use errors::*; use chrono::prelude::*; -// TODO: Needs cleanup. +/// Random db querries helper functions. +/// Probably needs cleanup. + pub fn get_sources(con: &SqliteConnection) -> QueryResult> { use schema::source::dsl::*; @@ -23,14 +25,6 @@ pub fn get_podcasts(con: &SqliteConnection) -> QueryResult> { pds } -// Maybe later. -// pub fn get_podcasts_ids(con: &SqliteConnection) -> QueryResult> { -// use schema::podcast::dsl::*; - -// let pds = podcast.select(id).load::(con); -// pds -// } - pub fn get_episodes(con: &SqliteConnection) -> QueryResult> { use schema::episode::dsl::*; @@ -177,14 +171,16 @@ pub fn delete_podcast_episodes(connection: &SqliteConnection, parent_id: i32) -> Ok(()) } -// TODO: make it transaction. pub fn update_none_to_played_now(connection: &SqliteConnection, parent: &Podcast) -> Result<()> { use schema::episode::dsl::*; let epoch_now = Utc::now().timestamp() as i32; - diesel::update(Episode::belonging_to(parent).filter(played.is_null())) - .set(played.eq(Some(epoch_now))) - .execute(connection)?; + connection.transaction(|| -> Result<()> { + diesel::update(Episode::belonging_to(parent).filter(played.is_null())) + .set(played.eq(Some(epoch_now))) + .execute(connection)?; + Ok(()) + })?; Ok(()) }