|
|
|
@ -396,6 +396,16 @@ impl Tree for PersyTree { |
|
|
|
Ok(()) |
|
|
|
Ok(()) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#[tracing::instrument(skip(self, iter))] |
|
|
|
|
|
|
|
fn insert_batch<'a>(&self, iter: &mut dyn Iterator<Item = (Vec<u8>, Vec<u8>)>) -> 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<()> { |
|
|
|
fn remove(&self, key: &[u8]) -> Result<()> { |
|
|
|
self.write_cache |
|
|
|
self.write_cache |
|
|
|
.write() |
|
|
|
.write() |
|
|
|
@ -404,7 +414,7 @@ impl Tree for PersyTree { |
|
|
|
Ok(()) |
|
|
|
Ok(()) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
fn iter<'a>(&'a self) -> Box<dyn Iterator<Item = (Vec<u8>, Vec<u8>)> + Send + 'a> { |
|
|
|
fn iter<'a>(&'a self) -> Box<dyn Iterator<Item = (Vec<u8>, Vec<u8>)> + 'a> { |
|
|
|
let iter = self.persy.range::<ByteVec, ByteVec, _>(&self.name, ..); |
|
|
|
let iter = self.persy.range::<ByteVec, ByteVec, _>(&self.name, ..); |
|
|
|
match iter { |
|
|
|
match iter { |
|
|
|
Ok(iter) => { |
|
|
|
Ok(iter) => { |
|
|
|
@ -427,7 +437,7 @@ impl Tree for PersyTree { |
|
|
|
&'a self, |
|
|
|
&'a self, |
|
|
|
from: &[u8], |
|
|
|
from: &[u8], |
|
|
|
backwards: bool, |
|
|
|
backwards: bool, |
|
|
|
) -> Box<dyn Iterator<Item = (Vec<u8>, Vec<u8>)> + Send + 'a> { |
|
|
|
) -> Box<dyn Iterator<Item = (Vec<u8>, Vec<u8>)> + 'a> { |
|
|
|
let range = if backwards { |
|
|
|
let range = if backwards { |
|
|
|
self.persy |
|
|
|
self.persy |
|
|
|
.range::<ByteVec, ByteVec, _>(&self.name, ..ByteVec(from.to_owned())) |
|
|
|
.range::<ByteVec, ByteVec, _>(&self.name, ..ByteVec(from.to_owned())) |
|
|
|
@ -471,7 +481,7 @@ impl Tree for PersyTree { |
|
|
|
fn scan_prefix<'a>( |
|
|
|
fn scan_prefix<'a>( |
|
|
|
&'a self, |
|
|
|
&'a self, |
|
|
|
prefix: Vec<u8>, |
|
|
|
prefix: Vec<u8>, |
|
|
|
) -> Box<dyn Iterator<Item = (Vec<u8>, Vec<u8>)> + Send + 'a> { |
|
|
|
) -> Box<dyn Iterator<Item = (Vec<u8>, Vec<u8>)> + 'a> { |
|
|
|
let range_prefix = ByteVec(prefix.to_owned()); |
|
|
|
let range_prefix = ByteVec(prefix.to_owned()); |
|
|
|
let range = self |
|
|
|
let range = self |
|
|
|
.persy |
|
|
|
.persy |
|
|
|
|