1- use ethrex_trie:: error:: TrieError ;
1+ use ethrex_trie:: { error:: TrieError , NodeHash } ;
22use libmdbx:: orm:: { Database , Table } ;
33use std:: { marker:: PhantomData , sync:: Arc } ;
44/// Libmdbx implementation for the TrieDB trait, with get and put operations.
@@ -11,7 +11,7 @@ use ethrex_trie::TrieDB;
1111
1212impl < T > LibmdbxTrieDB < T >
1313where
14- T : Table < Key = Vec < u8 > , Value = Vec < u8 > > ,
14+ T : Table < Key = NodeHash , Value = Vec < u8 > > ,
1515{
1616 pub fn new ( db : Arc < Database > ) -> Self {
1717 Self {
@@ -23,20 +23,20 @@ where
2323
2424impl < T > TrieDB for LibmdbxTrieDB < T >
2525where
26- T : Table < Key = Vec < u8 > , Value = Vec < u8 > > ,
26+ T : Table < Key = NodeHash , Value = Vec < u8 > > ,
2727{
28- fn get ( & self , key : Vec < u8 > ) -> Result < Option < Vec < u8 > > , TrieError > {
28+ fn get ( & self , key : NodeHash ) -> Result < Option < Vec < u8 > > , TrieError > {
2929 let txn = self . db . begin_read ( ) . map_err ( TrieError :: DbError ) ?;
3030 txn. get :: < T > ( key) . map_err ( TrieError :: DbError )
3131 }
3232
33- fn put ( & self , key : Vec < u8 > , value : Vec < u8 > ) -> Result < ( ) , TrieError > {
33+ fn put ( & self , key : NodeHash , value : Vec < u8 > ) -> Result < ( ) , TrieError > {
3434 let txn = self . db . begin_readwrite ( ) . map_err ( TrieError :: DbError ) ?;
3535 txn. upsert :: < T > ( key, value) . map_err ( TrieError :: DbError ) ?;
3636 txn. commit ( ) . map_err ( TrieError :: DbError )
3737 }
3838
39- fn put_batch ( & self , key_values : Vec < ( Vec < u8 > , Vec < u8 > ) > ) -> Result < ( ) , TrieError > {
39+ fn put_batch ( & self , key_values : Vec < ( NodeHash , Vec < u8 > ) > ) -> Result < ( ) , TrieError > {
4040 let txn = self . db . begin_readwrite ( ) . map_err ( TrieError :: DbError ) ?;
4141 for ( key, value) in key_values {
4242 txn. upsert :: < T > ( key, value) . map_err ( TrieError :: DbError ) ?;
4949mod test {
5050 use super :: LibmdbxTrieDB ;
5151 use crate :: trie_db:: test_utils:: libmdbx:: { new_db, TestNodes } ;
52+ use ethrex_trie:: NodeHash ;
5253 use ethrex_trie:: Trie ;
5354 use ethrex_trie:: TrieDB ;
5455 use libmdbx:: {
@@ -58,28 +59,36 @@ mod test {
5859 use std:: sync:: Arc ;
5960 use tempdir:: TempDir ;
6061
62+ pub const HELLO_NODEHASH : NodeHash = NodeHash :: Inline ( (
63+ [
64+ 104 , 101 , 108 , 108 , 111 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
65+ 0 , 0 , 0 , 0 , 0 ,
66+ ] ,
67+ 2 ,
68+ ) ) ;
69+
6170 #[ test]
6271 fn simple_addition ( ) {
6372 table ! (
6473 /// NodeHash to Node table
65- ( Nodes ) Vec < u8 > => Vec <u8 >
74+ ( Nodes ) NodeHash => Vec <u8 >
6675 ) ;
6776 let inner_db = new_db :: < Nodes > ( ) ;
6877 let db = LibmdbxTrieDB :: < Nodes > :: new ( inner_db) ;
69- assert_eq ! ( db. get( "hello" . into ( ) ) . unwrap( ) , None ) ;
70- db. put ( "hello" . into ( ) , "value" . into ( ) ) . unwrap ( ) ;
71- assert_eq ! ( db. get( "hello" . into ( ) ) . unwrap( ) , Some ( "value" . into( ) ) ) ;
78+ assert_eq ! ( db. get( HELLO_NODEHASH ) . unwrap( ) , None ) ;
79+ db. put ( HELLO_NODEHASH , "value" . into ( ) ) . unwrap ( ) ;
80+ assert_eq ! ( db. get( HELLO_NODEHASH ) . unwrap( ) , Some ( "value" . into( ) ) ) ;
7281 }
7382
7483 #[ test]
7584 fn different_tables ( ) {
7685 table ! (
7786 /// vec to vec
78- ( TableA ) Vec < u8 > => Vec <u8 >
87+ ( TableA ) NodeHash => Vec <u8 >
7988 ) ;
8089 table ! (
8190 /// vec to vec
82- ( TableB ) Vec < u8 > => Vec <u8 >
91+ ( TableB ) NodeHash => Vec <u8 >
8392 ) ;
8493 let tables = [ table_info ! ( TableA ) , table_info ! ( TableB ) ]
8594 . into_iter ( )
@@ -88,8 +97,8 @@ mod test {
8897 let inner_db = Arc :: new ( Database :: create ( None , & tables) . unwrap ( ) ) ;
8998 let db_a = LibmdbxTrieDB :: < TableA > :: new ( inner_db. clone ( ) ) ;
9099 let db_b = LibmdbxTrieDB :: < TableB > :: new ( inner_db. clone ( ) ) ;
91- db_a. put ( "hello" . into ( ) , "value" . into ( ) ) . unwrap ( ) ;
92- assert_eq ! ( db_b. get( "hello" . into ( ) ) . unwrap( ) , None ) ;
100+ db_a. put ( HELLO_NODEHASH , "value" . into ( ) ) . unwrap ( ) ;
101+ assert_eq ! ( db_b. get( HELLO_NODEHASH ) . unwrap( ) , None ) ;
93102 }
94103
95104 #[ test]
0 commit comments