Browse Source

minor fix in the integration with persy

merge-requests/107/head
Tglman 5 years ago
parent
commit
546a347a10
  1. 31
      src/database/abstraction.rs

31
src/database/abstraction.rs

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

Loading…
Cancel
Save