diff options
Diffstat (limited to 'database/src/helper.rs')
| -rw-r--r-- | database/src/helper.rs | 23 |
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 {} |