aboutsummaryrefslogtreecommitdiff
path: root/database
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2026-02-27 14:40:15 +0100
committermetamuffin <metamuffin@disroot.org>2026-02-27 14:40:15 +0100
commitc05bfcc2775f0e11db6e856bfcf06d0419c35d54 (patch)
treeffd0e9fcf6b476a6198287085a514cfa7940c200 /database
parent4ba86694e393c61107e27c4127efc0455b329524 (diff)
downloadjellything-c05bfcc2775f0e11db6e856bfcf06d0419c35d54.tar
jellything-c05bfcc2775f0e11db6e856bfcf06d0419c35d54.tar.bz2
jellything-c05bfcc2775f0e11db6e856bfcf06d0419c35d54.tar.zst
ui changed before object slices
Diffstat (limited to 'database')
-rw-r--r--database/src/helper.rs23
-rw-r--r--database/src/lib.rs1
2 files changed, 24 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 {}
diff --git a/database/src/lib.rs b/database/src/lib.rs
index 13e4a0d..b8a67c9 100644
--- a/database/src/lib.rs
+++ b/database/src/lib.rs
@@ -8,6 +8,7 @@ pub mod kv;
pub mod query_syntax;
#[cfg(test)]
pub mod test_shared;
+pub mod helper;
use anyhow::Result;
use jellyobject::{ObjectBuffer, Path, Value};