aboutsummaryrefslogtreecommitdiff
path: root/database/src/helper.rs
diff options
context:
space:
mode:
Diffstat (limited to 'database/src/helper.rs')
-rw-r--r--database/src/helper.rs23
1 files changed, 23 insertions, 0 deletions
diff --git a/database/src/helper.rs b/database/src/helper.rs
new file mode 100644
index 0000000..28ab1fa
--- /dev/null
+++ b/database/src/helper.rs
@@ -0,0 +1,23 @@
+/*
+ This file is part of jellything (https://codeberg.org/metamuffin/jellything)
+ which is licensed under the GNU Affero General Public License (version 3); see /COPYING.
+ Copyright (C) 2026 metamuffin <metamuffin.org>
+*/
+
+use crate::{Database, Transaction};
+use anyhow::Result;
+
+pub trait DatabaseReturnExt: Database {
+ fn transaction_ret<T>(
+ &self,
+ mut t: impl FnMut(&mut dyn Transaction) -> Result<T>,
+ ) -> Result<T> {
+ let mut ret = None;
+ self.transaction(&mut |x| {
+ ret = Some(t(x)?);
+ Ok(())
+ })?;
+ Ok(ret.unwrap())
+ }
+}
+impl<D: Database> DatabaseReturnExt for D {}