diff --git a/rust/optics-core/src/db/mod.rs b/rust/optics-core/src/db/mod.rs index ff078aeda..0ae44f6c9 100644 --- a/rust/optics-core/src/db/mod.rs +++ b/rust/optics-core/src/db/mod.rs @@ -11,8 +11,8 @@ mod typed_db; pub use typed_db::*; /// DB operations tied to specific home -mod home_db; -pub use home_db::*; +// mod home_db; +// pub use home_db::*; use crate::{Decode, Encode, OpticsError}; diff --git a/rust/optics-core/src/db/typed_db.rs b/rust/optics-core/src/db/typed_db.rs index b84fcd6bc..93adfa7a8 100644 --- a/rust/optics-core/src/db/typed_db.rs +++ b/rust/optics-core/src/db/typed_db.rs @@ -6,28 +6,23 @@ use color_eyre::Result; /// /// Key structure: ```__``` #[derive(Debug, Clone)] -pub struct TypedDB { - db: DB, - type_prefix: Vec, -} +pub struct TypedDB(DB); + impl TypedDB { /// Instantiate new `TypedDB` - pub fn new(db: DB, type_prefix: impl Into>) -> Self { - Self { - db, - type_prefix: type_prefix.into(), - } + pub fn new(db: DB) -> Self { + Self(db) } /// Return reference to raw db pub fn db(&self) -> &DB { - &self.db + &self.0 } - fn full_prefix(&self, prefix: impl AsRef<[u8]>) -> Vec { + fn full_prefix(entity: impl AsRef<[u8]>, prefix: impl AsRef<[u8]>) -> Vec { let mut full_prefix = vec![]; - full_prefix.extend(self.type_prefix.as_ref() as &[u8]); + full_prefix.extend(entity.as_ref()); full_prefix.extend("_".as_bytes()); full_prefix.extend(prefix.as_ref()); full_prefix @@ -36,39 +31,21 @@ impl TypedDB { /// Store encodable value pub fn store_encodable( &self, + entity: impl AsRef<[u8]>, prefix: impl AsRef<[u8]>, key: impl AsRef<[u8]>, value: &V, ) -> Result<(), DbError> { - self.db - .store_encodable(&self.full_prefix(prefix), key, value) + self.0.store_encodable(TypedDB::full_prefix(entity, prefix), key, value) } /// Retrieve decodable value pub fn retrieve_decodable( &self, + entity: impl AsRef<[u8]>, prefix: impl AsRef<[u8]>, key: impl AsRef<[u8]>, ) -> Result, DbError> { - self.db.retrieve_decodable(&self.full_prefix(prefix), key) - } - - /// Store encodable kv pair - pub fn store_keyed_encodable( - &self, - prefix: impl AsRef<[u8]>, - key: &K, - value: &V, - ) -> Result<(), DbError> { - self.store_encodable(prefix, key.to_vec(), value) - } - - /// Retrieve decodable value given encodable key - pub fn retrieve_keyed_decodable( - &self, - prefix: impl AsRef<[u8]>, - key: &K, - ) -> Result, DbError> { - self.retrieve_decodable(prefix, key.to_vec()) + self.0.retrieve_decodable(TypedDB::full_prefix(entity, prefix), key) } }