@@ -5,91 +5,91 @@ use std::time::{SystemTime, UNIX_EPOCH};
55
66#[ derive( Debug ) ]
77pub struct DatabaseEntry {
8- key : Vec < u8 > ,
9- value : Vec < u8 > ,
10- timestamp : u128 ,
8+ key : Vec < u8 > ,
9+ value : Vec < u8 > ,
10+ timestamp : u128 ,
1111}
1212
1313impl DatabaseEntry {
14- pub fn key ( & self ) -> & [ u8 ] {
15- & self . key
16- }
14+ pub fn key ( & self ) -> & [ u8 ] {
15+ & self . key
16+ }
1717
18- pub fn value ( & self ) -> & [ u8 ] {
19- & self . value
20- }
18+ pub fn value ( & self ) -> & [ u8 ] {
19+ & self . value
20+ }
2121
22- pub fn timestamp ( & self ) -> u128 {
23- self . timestamp
24- }
22+ pub fn timestamp ( & self ) -> u128 {
23+ self . timestamp
24+ }
2525}
2626
2727pub struct Database {
28- dir : PathBuf ,
29- mem_table : MemTable ,
30- wal : WAL ,
28+ dir : PathBuf ,
29+ mem_table : MemTable ,
30+ wal : WAL ,
3131}
3232
3333impl Database {
34- pub fn new ( dir : & str ) -> Database {
35- let dir = PathBuf :: from ( dir) ;
34+ pub fn new ( dir : & str ) -> Database {
35+ let dir = PathBuf :: from ( dir) ;
3636
37- let ( wal, mem_table) = WAL :: load_from_dir ( & dir) . unwrap ( ) ;
37+ let ( wal, mem_table) = WAL :: load_from_dir ( & dir) . unwrap ( ) ;
3838
39- Database {
40- dir : dir,
41- mem_table,
42- wal,
39+ Database {
40+ dir : dir,
41+ mem_table,
42+ wal,
43+ }
4344 }
44- }
45-
46- pub fn get ( & self , key : & [ u8 ] ) -> Option < DatabaseEntry > {
47- if let Some ( mem_entry) = self . mem_table . get ( key) {
48- return Some ( DatabaseEntry {
49- key : mem_entry. key . clone ( ) ,
50- value : mem_entry. value . as_ref ( ) . unwrap ( ) . clone ( ) ,
51- timestamp : mem_entry. timestamp ,
52- } ) ;
53- }
54-
55- None
56- }
5745
58- pub fn set ( & mut self , key : & [ u8 ] , value : & [ u8 ] ) -> Result < usize , usize > {
59- let timestamp = SystemTime :: now ( )
60- . duration_since ( UNIX_EPOCH )
61- . unwrap ( )
62- . as_micros ( ) ;
46+ pub fn get ( & self , key : & [ u8 ] ) -> Option < DatabaseEntry > {
47+ if let Some ( mem_entry) = self . mem_table . get ( key) {
48+ return Some ( DatabaseEntry {
49+ key : mem_entry. key . clone ( ) ,
50+ value : mem_entry. value . as_ref ( ) . unwrap ( ) . clone ( ) ,
51+ timestamp : mem_entry. timestamp ,
52+ } ) ;
53+ }
6354
64- let wal_res = self . wal . set ( key, value, timestamp) ;
65- if wal_res. is_err ( ) {
66- return Err ( 0 ) ;
67- }
68- if self . wal . flush ( ) . is_err ( ) {
69- return Err ( 0 ) ;
55+ None
7056 }
7157
72- self . mem_table . set ( key, value, timestamp) ;
58+ pub fn set ( & mut self , key : & [ u8 ] , value : & [ u8 ] ) -> Result < usize , usize > {
59+ let timestamp = SystemTime :: now ( )
60+ . duration_since ( UNIX_EPOCH )
61+ . unwrap ( )
62+ . as_micros ( ) ;
7363
74- Ok ( 1 )
75- }
64+ let wal_res = self . wal . set ( key, value, timestamp) ;
65+ if wal_res. is_err ( ) {
66+ return Err ( 0 ) ;
67+ }
68+ if self . wal . flush ( ) . is_err ( ) {
69+ return Err ( 0 ) ;
70+ }
7671
77- pub fn delete ( & mut self , key : & [ u8 ] ) -> Result < usize , usize > {
78- let timestamp = SystemTime :: now ( )
79- . duration_since ( UNIX_EPOCH )
80- . unwrap ( )
81- . as_micros ( ) ;
72+ self . mem_table . set ( key, value, timestamp) ;
8273
83- let wal_res = self . wal . delete ( key, timestamp) ;
84- if wal_res. is_err ( ) {
85- return Err ( 0 ) ;
86- }
87- if self . wal . flush ( ) . is_err ( ) {
88- return Err ( 0 ) ;
74+ Ok ( 1 )
8975 }
9076
91- self . mem_table . delete ( key, timestamp) ;
77+ pub fn delete ( & mut self , key : & [ u8 ] ) -> Result < usize , usize > {
78+ let timestamp = SystemTime :: now ( )
79+ . duration_since ( UNIX_EPOCH )
80+ . unwrap ( )
81+ . as_micros ( ) ;
82+
83+ let wal_res = self . wal . delete ( key, timestamp) ;
84+ if wal_res. is_err ( ) {
85+ return Err ( 0 ) ;
86+ }
87+ if self . wal . flush ( ) . is_err ( ) {
88+ return Err ( 0 ) ;
89+ }
9290
93- Ok ( 1 )
94- }
91+ self . mem_table . delete ( key, timestamp) ;
92+
93+ Ok ( 1 )
94+ }
9595}
0 commit comments