From a0c4ec0be0ff019cbefb49ef4e2c387ecc0b356e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Renault?= Date: Mon, 18 Feb 2019 18:01:40 +0100 Subject: [PATCH] feat: Introduce the updated_documents methods --- src/database/mod.rs | 18 ++++++------------ src/database/update/index_event.rs | 10 ++++++++++ src/database/update/ranked_map_event.rs | 10 ++++++++++ 3 files changed, 26 insertions(+), 12 deletions(-) diff --git a/src/database/mod.rs b/src/database/mod.rs index 8bca09f2e..5d526dcd7 100644 --- a/src/database/mod.rs +++ b/src/database/mod.rs @@ -21,6 +21,8 @@ use crate::shared_data_cursor::FromSharedDataCursor; use crate::write_to_bytes::WriteToBytes; use crate::DocumentId; +use self::update::{ReadIndexEvent, ReadRankedMapEvent}; + pub use self::document_key::{DocumentKey, DocumentKeyAttr}; pub use self::view::{DatabaseView, DocumentIter}; pub use self::update::Update; @@ -55,8 +57,6 @@ where D: Deref fn retrieve_data_index(snapshot: &Snapshot) -> Result> where D: Deref { - use self::update::ReadIndexEvent::{self, *}; - let start = Instant::now(); let vector = snapshot.get(DATA_INDEX)?; info!("loading index from kv-store took {:.2?}", start.elapsed()); @@ -68,10 +68,8 @@ where D: Deref let bytes = vector.as_ref().to_vec(); info!("index size is {}B", SizeFormatterBinary::new(bytes.len() as u64)); - let index = match ReadIndexEvent::from_bytes(bytes)? { - RemovedDocuments(_) => panic!("BUG: RemovedDocument event retrieved"), - UpdatedDocuments(index) => index, - }; + let event = ReadIndexEvent::from_bytes(bytes)?; + let index = event.updated_documents().expect("BUG: invalid event deserialized"); info!("loading index from bytes took {:.2?}", start.elapsed()); @@ -84,8 +82,6 @@ where D: Deref fn retrieve_data_ranked_map(snapshot: &Snapshot) -> Result> where D: Deref, { - use self::update::ReadRankedMapEvent::{self, *}; - let start = Instant::now(); let vector = snapshot.get(DATA_RANKED_MAP)?; info!("loading ranked map from kv-store took {:.2?}", start.elapsed()); @@ -97,10 +93,8 @@ where D: Deref, let bytes = vector.as_ref().to_vec(); info!("ranked map size is {}B", SizeFormatterBinary::new(bytes.len() as u64)); - let ranked_map = match ReadRankedMapEvent::from_bytes(bytes)? { - RemovedDocuments(_) => panic!("BUG: RemovedDocument event retrieved"), - UpdatedDocuments(ranked_map) => ranked_map, - }; + let event = ReadRankedMapEvent::from_bytes(bytes)?; + let ranked_map = event.updated_documents().expect("BUG: invalid event deserialized"); info!("loading ranked map from bytes took {:.2?}", start.elapsed()); diff --git a/src/database/update/index_event.rs b/src/database/update/index_event.rs index 74c6242e7..cd006aa3c 100644 --- a/src/database/update/index_event.rs +++ b/src/database/update/index_event.rs @@ -32,6 +32,16 @@ pub enum ReadIndexEvent { UpdatedDocuments(Index), } +impl ReadIndexEvent { + pub fn updated_documents(self) -> Option { + use ReadIndexEvent::*; + match self { + RemovedDocuments(_) => None, + UpdatedDocuments(index) => Some(index), + } + } +} + impl FromSharedDataCursor for ReadIndexEvent { type Error = Box; diff --git a/src/database/update/ranked_map_event.rs b/src/database/update/ranked_map_event.rs index 2fba12f04..5a51f8799 100644 --- a/src/database/update/ranked_map_event.rs +++ b/src/database/update/ranked_map_event.rs @@ -32,6 +32,16 @@ pub enum ReadRankedMapEvent { UpdatedDocuments(RankedMap), } +impl ReadRankedMapEvent { + pub fn updated_documents(self) -> Option { + use ReadRankedMapEvent::*; + match self { + RemovedDocuments(_) => None, + UpdatedDocuments(ranked_map) => Some(ranked_map), + } + } +} + impl FromSharedDataCursor for ReadRankedMapEvent { type Error = Box;