From 559ce804a780e96cbdc38b54b8251ebea6d9298b Mon Sep 17 00:00:00 2001 From: Artus Date: Sun, 27 Oct 2019 14:50:49 +0100 Subject: [PATCH] makes resolve_claims a single transaction --- lootalot_db/src/lib.rs | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/lootalot_db/src/lib.rs b/lootalot_db/src/lib.rs index 3b101ac..f2d2589 100644 --- a/lootalot_db/src/lib.rs +++ b/lootalot_db/src/lib.rs @@ -100,20 +100,20 @@ pub fn fetch_claims(conn: &DbConnection) -> QueryResult> { pub fn resolve_claims(conn: &DbConnection) -> QueryResult<()> { let data = models::claim::Claims(conn).grouped_by_item()?; dbg!(&data); - for (item, mut claims) in data { - if claims.len() > 1 { - // TODO: better sorting mechanism :) - claims.sort_by(|a,b| a.resolve.cmp(&b.resolve)); + conn.transaction(move || { + for (item, mut claims) in data { + if claims.len() > 1 { + // TODO: better sorting mechanism :) + claims.sort_by(|a,b| a.resolve.cmp(&b.resolve)); + } + let winner = claims.get(0).expect("Claims should not be empty !"); + let player_id = winner.player_id; + winner.resolve_claim(conn)?; + models::player::AsPlayer(conn, player_id) + .update_debt(item.sell_value())?; } - let winner = claims.get(0).expect("Claims should not be empty !"); - let player_id = winner.player_id; - conn.transaction(|| { - winner.resolve_claim(conn)?; - models::player::AsPlayer(conn, player_id) - .update_debt(item.sell_value()) - })?; - } - Ok(()) + Ok(()) + }) } /// Split up and share group money among selected players