feat: Simplify the steps to query the database

This commit is contained in:
Clément Renault 2018-12-07 14:41:06 +01:00
parent 8bee31078d
commit 9342290afe
No known key found for this signature in database
GPG key ID: 0151CDAB43460DAE
12 changed files with 101 additions and 73 deletions

View file

@ -7,7 +7,9 @@ use serde::de::DeserializeOwned;
use crate::database::{retrieve_data_schema, DocumentKey, DocumentKeyAttr};
use crate::database::deserializer::Deserializer;
use crate::rank::criterion::Criterion;
use crate::database::schema::Schema;
use crate::rank::QueryBuilder;
use crate::DocumentId;
pub struct DatabaseView<'a> {
@ -21,14 +23,26 @@ impl<'a> DatabaseView<'a> {
Ok(DatabaseView { snapshot, schema })
}
pub fn schema(&self) -> &Schema {
&self.schema
}
pub fn into_snapshot(self) -> Snapshot<&'a DB> {
self.snapshot
}
pub fn snapshot(&self) -> &Snapshot<&'a DB> {
&self.snapshot
}
pub fn get(&self, key: &[u8]) -> Result<Option<DBVector>, Box<Error>> {
Ok(self.snapshot.get(key)?)
}
pub fn query_builder(&self) -> Result<QueryBuilder<Box<dyn Criterion>>, Box<Error>> {
QueryBuilder::new(self)
}
// TODO create an enum error type
pub fn retrieve_document<D>(&self, id: DocumentId) -> Result<D, Box<Error>>
where D: DeserializeOwned

View file

@ -8,7 +8,7 @@ use rocksdb::{DB, DBVector, MergeOperands, SeekKey};
use rocksdb::rocksdb::{Writable, Snapshot};
pub use self::document_key::{DocumentKey, DocumentKeyAttr};
pub use self::database_view::DatabaseView;
pub use self::database_view::{DatabaseView, DocumentIter};
use self::blob::positive::PositiveBlob;
use self::update::Update;
use self::schema::Schema;
@ -126,7 +126,7 @@ impl fmt::Debug for Database {
let mut iter = self.0.iter();
iter.seek(SeekKey::Start);
let mut first = true;
for (key, value) in &mut iter {
for (key, _value) in &mut iter {
if !first { write!(f, ", ")?; }
first = false;
let key = String::from_utf8_lossy(&key);

View file

@ -1,3 +1,5 @@
#![allow(unused)]
use std::collections::BTreeMap;
use std::error::Error;
use std::io::Write;

View file

@ -107,7 +107,7 @@ struct Serializer<'a, B> {
macro_rules! forward_to_unserializable_type {
($($ty:ident => $se_method:ident,)*) => {
$(
fn $se_method(self, v: $ty) -> Result<Self::Ok, Self::Error> {
fn $se_method(self, _v: $ty) -> Result<Self::Ok, Self::Error> {
Err(SerializerError::UnserializableType { name: "$ty" })
}
)*
@ -145,11 +145,11 @@ where B: TokenizerBuilder
f64 => serialize_f64,
}
fn serialize_str(self, v: &str) -> Result<Self::Ok, Self::Error> {
fn serialize_str(self, _v: &str) -> Result<Self::Ok, Self::Error> {
Err(SerializerError::UnserializableType { name: "str" })
}
fn serialize_bytes(self, v: &[u8]) -> Result<Self::Ok, Self::Error> {
fn serialize_bytes(self, _v: &[u8]) -> Result<Self::Ok, Self::Error> {
Err(SerializerError::UnserializableType { name: "&[u8]" })
}
@ -375,7 +375,7 @@ where B: TokenizerBuilder
Ok(())
}
fn serialize_bytes(self, v: &[u8]) -> Result<Self::Ok, Self::Error> {
fn serialize_bytes(self, _v: &[u8]) -> Result<Self::Ok, Self::Error> {
Err(SerializerError::UnserializableType { name: "&[u8]" })
}