Browse Source

minor fix in the integration with persy

merge-requests/107/merge^2
Tglman 5 years ago
parent
commit
91e79bd9f4
  1. 25
      src/database/abstraction.rs

25
src/database/abstraction.rs

@ -80,7 +80,7 @@ impl DatabaseEngine for PersyEngine {
let persy = persy::OpenOptions::new() let persy = persy::OpenOptions::new()
.create(true) .create(true)
.config(cfg) .config(cfg)
.open(&config.database_path)?; .open(&format!("{}/db.persy", config.database_path))?;
Ok(Arc::new(PersyEngine(persy))) Ok(Arc::new(PersyEngine(persy)))
} }
@ -179,19 +179,31 @@ impl Tree for PersyTree {
from: &[u8], from: &[u8],
backwards: bool, backwards: bool,
) -> Box<dyn Iterator<Item = (Box<[u8]>, Box<[u8]>)> + 'a> { ) -> Box<dyn Iterator<Item = (Box<[u8]>, Box<[u8]>)> + 'a> {
Box::new( let iter = if backwards {
self.db
.range::<persy::ByteVec, persy::ByteVec, _>(
&self.name,
..persy::ByteVec(from.to_owned()),
)
.unwrap()
} else {
self.db self.db
.range::<persy::ByteVec, persy::ByteVec, _>( .range::<persy::ByteVec, persy::ByteVec, _>(
&self.name, &self.name,
persy::ByteVec(from.to_owned()).., persy::ByteVec(from.to_owned())..,
) )
.unwrap() .unwrap()
.filter_map(|(k, v)| { };
let map = iter.filter_map(|(k, v)| {
v.into_iter() v.into_iter()
.map(|val| (k.0.to_owned().into(), val.0.to_owned().into())) .map(|val| (k.0.to_owned().into(), val.0.to_owned().into()))
.next() .next()
}), });
) if backwards {
Box::new(map.rev())
} else {
Box::new(map)
}
} }
fn increment(&self, key: &[u8]) -> Result<Vec<u8>> { fn increment(&self, key: &[u8]) -> Result<Vec<u8>> {
@ -210,9 +222,10 @@ impl Tree for PersyTree {
self.db self.db
.range::<persy::ByteVec, persy::ByteVec, _>( .range::<persy::ByteVec, persy::ByteVec, _>(
&self.name, &self.name,
range_prefix.clone()..=range_prefix, range_prefix..,
) )
.unwrap() .unwrap()
.take_while(move |(k, _)| k.0.starts_with(&prefix))
.filter_map(|(k, v)| { .filter_map(|(k, v)| {
v.into_iter() v.into_iter()
.map(|val| (k.0.to_owned().into(), val.0.to_owned().into())) .map(|val| (k.0.to_owned().into(), val.0.to_owned().into()))

Loading…
Cancel
Save