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