diff --git a/src/database/abstraction/persy.rs b/src/database/abstraction/persy.rs index ba1a1ab..d594811 100644 --- a/src/database/abstraction/persy.rs +++ b/src/database/abstraction/persy.rs @@ -396,6 +396,16 @@ impl Tree for PersyTree { Ok(()) } + #[tracing::instrument(skip(self, iter))] + fn insert_batch<'a>(&self, iter: &mut dyn Iterator, Vec)>) -> Result<()> { + //TODO: evaluate if use instead a single big transaction + for (key, value) in iter { + self.insert(&key, &value)?; + } + + Ok(()) + } + fn remove(&self, key: &[u8]) -> Result<()> { self.write_cache .write() @@ -404,7 +414,7 @@ impl Tree for PersyTree { Ok(()) } - fn iter<'a>(&'a self) -> Box, Vec)> + Send + 'a> { + fn iter<'a>(&'a self) -> Box, Vec)> + 'a> { let iter = self.persy.range::(&self.name, ..); match iter { Ok(iter) => { @@ -427,7 +437,7 @@ impl Tree for PersyTree { &'a self, from: &[u8], backwards: bool, - ) -> Box, Vec)> + Send + 'a> { + ) -> Box, Vec)> + 'a> { let range = if backwards { self.persy .range::(&self.name, ..ByteVec(from.to_owned())) @@ -471,7 +481,7 @@ impl Tree for PersyTree { fn scan_prefix<'a>( &'a self, prefix: Vec, - ) -> Box, Vec)> + Send + 'a> { + ) -> Box, Vec)> + 'a> { let range_prefix = ByteVec(prefix.to_owned()); let range = self .persy