Skip to content

Commit

Permalink
update db interface
Browse files Browse the repository at this point in the history
  • Loading branch information
morph-dev committed Mar 25, 2024
1 parent 99fd8e7 commit 90f5fc5
Show file tree
Hide file tree
Showing 6 changed files with 24 additions and 22 deletions.
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[workspace]
members = [ "db", "merkle_old", "verkle" ]
members = [ "db", "merkle_old", "merkle", "verkle" ]
resolver = "2"

[profile.bench]
Expand Down
6 changes: 3 additions & 3 deletions db/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
pub mod errors;
use errors::DbError;

pub mod errors;
pub mod memory_db;

pub trait Db<K, V> {
fn write(&mut self, key: &K, value: &V) -> Result<(), DbError>;
fn write(&mut self, key: K, value: V) -> Result<(), DbError>;

fn read(&self, key: &K) -> Result<Option<V>, DbError>;
fn read(&self, key: &K) -> Result<Option<&V>, DbError>;
}
29 changes: 12 additions & 17 deletions db/src/memory_db.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use super::{Db, DbError};

use std::{cmp::Eq, collections::HashMap, hash::Hash};
use std::{collections::HashMap, hash::Hash};

#[derive(Default)]
pub struct MemoryDb<K, V> {
Expand All @@ -15,19 +15,14 @@ impl<K, V> MemoryDb<K, V> {
}
}

impl<K, V> Db<K, V> for MemoryDb<K, V>
where
K: Clone + Eq + Hash,
V: Clone,
{
fn write(&mut self, key: &K, value: &V) -> Result<(), DbError> {
self.data.insert(key.clone(), value.clone());
impl<K: Hash + Eq, V> Db<K, V> for MemoryDb<K, V> {
fn write(&mut self, key: K, value: V) -> Result<(), DbError> {
self.data.insert(key, value);
Ok(())
}

fn read(&self, key: &K) -> Result<Option<V>, DbError> {
let v = self.data.get(key).cloned();
Ok(v)
fn read(&self, key: &K) -> Result<Option<&V>, DbError> {
Ok(self.data.get(key))
}
}

Expand All @@ -49,8 +44,8 @@ mod tests {
let mut memory_db: MemoryDb<[u8; 4], [u16; 8]> = MemoryDb::new();
let key = [1u8, 2, 3, 4];
let value = [1u16, 1, 2, 3, 5, 8, 13, 21];
assert_ok!(memory_db.write(&key, &value));
assert_ok_eq!(memory_db.read(&key), Some(value));
assert_ok!(memory_db.write(key, value.clone()));
assert_ok_eq!(memory_db.read(&key), Some(&value));
}

#[test]
Expand All @@ -60,10 +55,10 @@ mod tests {
let value1 = [0u16, 1, 1, 2, 3, 5, 8, 13];
let value2 = [1u16, 1, 2, 3, 5, 8, 13, 21];

assert_ok!(memory_db.write(&key, &value1));
assert_ok_eq!(memory_db.read(&key), Some(value1));
assert_ok!(memory_db.write(key, value1.clone()));
assert_ok_eq!(memory_db.read(&key), Some(&value1));

assert_ok!(memory_db.write(&key, &value2));
assert_ok_eq!(memory_db.read(&key), Some(value2));
assert_ok!(memory_db.write(key, value2.clone()));
assert_ok_eq!(memory_db.read(&key), Some(&value2));
}
}
6 changes: 6 additions & 0 deletions merkle/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[package]
name = "merkle"
version = "0.1.0"
edition = "2021"

[dependencies]
1 change: 1 addition & 0 deletions merkle/src/lib.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
pub struct Merkle {}
2 changes: 1 addition & 1 deletion merkle_old/src/nodes/node.rs
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ impl NodeRef {
pub fn save(&self, db: &mut Box<dyn Db<B256, Vec<u8>>>) -> Result<()> {
match &self.node {
None => bail!("Trying to save unknown node"),
Some(node) => Ok(db.write(&self.hash, &alloy_rlp::encode(node))?),
Some(node) => Ok(db.write(self.hash, alloy_rlp::encode(node))?),
}
}

Expand Down

0 comments on commit 90f5fc5

Please sign in to comment.