aboutsummaryrefslogtreecommitdiff
path: root/database/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'database/src/lib.rs')
-rw-r--r--database/src/lib.rs7
1 files changed, 5 insertions, 2 deletions
diff --git a/database/src/lib.rs b/database/src/lib.rs
index d4b9fba..c4b2d47 100644
--- a/database/src/lib.rs
+++ b/database/src/lib.rs
@@ -11,7 +11,7 @@ use anyhow::Result;
use jellyobject::{ObjectBuffer, Path};
pub type RowNum = u64;
-pub type RowIter = Box<dyn Iterator<Item = Result<RowNum>>>;
+pub type RowIter = Box<dyn Iterator<Item = Result<(RowNum, Vec<u8>)>>>;
pub trait Database: Send + Sync {
fn transaction(&self, f: &mut dyn FnMut(&mut dyn Transaction) -> Result<()>) -> Result<()>;
@@ -22,7 +22,10 @@ pub trait Transaction {
fn remove(&mut self, row: RowNum) -> Result<()>;
fn update(&mut self, row: RowNum, entry: ObjectBuffer) -> Result<()>;
fn get(&self, row: RowNum) -> Result<Option<ObjectBuffer>>;
- fn query(&mut self, query: Query) -> Result<RowIter>;
+ fn query<'a>(
+ &'a mut self,
+ query: Query,
+ ) -> Result<Box<dyn Iterator<Item = Result<(RowNum, Vec<u8>)>> + 'a>>;
fn query_single(&mut self, query: Query) -> Result<Option<RowNum>>;
fn count(&mut self, query: Query) -> Result<u64>;
}