From d5119db165e2c7e2d938da4eeee62f4ab7760d19 Mon Sep 17 00:00:00 2001 From: Quentin de Quelen Date: Tue, 12 Feb 2019 18:41:51 +0100 Subject: [PATCH] feat: Allow to retrieve config from Database and DatabaseView --- src/database/mod.rs | 12 +++++++++++- src/database/view.rs | 4 ++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/database/mod.rs b/src/database/mod.rs index 8a032080e..7a2982fb5 100644 --- a/src/database/mod.rs +++ b/src/database/mod.rs @@ -279,13 +279,17 @@ impl DatabaseIndex { self.view.load() } + fn get_config(&self) -> Config { + self.view().config().clone() + } + fn update_config(&self, config: Config) -> Result>>, Box>{ let data = bincode::serialize(&config)?; self.db.put(CONFIG, &data)?; let snapshot = Snapshot::new(self.db.clone()); let view = Arc::new(DatabaseView::new(snapshot)?); - self.view.set(view.clone()); + self.view.store(view.clone()); Ok(view) } @@ -393,6 +397,12 @@ impl Database { Ok(index_guard.val().view()) } + pub fn get_config(&self, index: &str) -> Result> { + let index_guard = self.indexes.get(index).ok_or("Index not found")?; + + Ok(index_guard.val().get_config()) + } + pub fn update_config(&self, index: &str, config: Config) -> Result>>, Box>{ let index_guard = self.indexes.get(index).ok_or("Index not found")?; diff --git a/src/database/view.rs b/src/database/view.rs index 3cee6db4e..81d14c3d5 100644 --- a/src/database/view.rs +++ b/src/database/view.rs @@ -58,6 +58,10 @@ where D: Deref &self.snapshot } + pub fn config(&self) -> &Config { + &self.config + } + pub fn get(&self, key: &[u8]) -> Result, Box> { Ok(self.snapshot.get(key)?) }