From f86d3a68f48dd580b249e5beb8be8f0fe7de2cdd Mon Sep 17 00:00:00 2001 From: Quentin Dufour Date: Mon, 25 Apr 2022 13:37:08 +0200 Subject: [PATCH] Wrap logic of the insert! macro in a transaction --- plume-models/src/lib.rs | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/plume-models/src/lib.rs b/plume-models/src/lib.rs index 546d5997..4f3ef6bc 100644 --- a/plume-models/src/lib.rs +++ b/plume-models/src/lib.rs @@ -261,13 +261,16 @@ macro_rules! insert { #[allow(dead_code)] pub fn insert(conn: &crate::Connection, new: $from) -> Result { - diesel::insert_into($table::table) - .values(new) - .execute(conn)?; - #[allow(unused_mut)] - let mut $val = Self::last(conn)?; - let $conn = conn; - $( $after )+ + use diesel::connection::Connection as _; + conn.transaction::<_, Error, _>(|| { + diesel::insert_into($table::table) + .values(new) + .execute(conn)?; + #[allow(unused_mut)] + let mut $val = Self::last(conn)?; + let $conn = conn; + $( $after )+ + }) } }; }