11extern crate rocksdb;
2- use rocksdb:: { DBCommon , DBIteratorWithThreadMode , DBWithThreadMode , Options , SingleThreaded , DB } ;
2+ use rocksdb:: { IteratorMode , DB } ;
33
44fn make_db_path ( ) -> String {
55 let home_dir = tauri:: api:: path:: home_dir ( ) . unwrap ( ) ;
@@ -12,11 +12,17 @@ fn make_db_path() -> String {
1212 path. to_str ( ) . unwrap ( ) . to_string ( )
1313}
1414
15+ fn open_db ( ) -> DB {
16+ let path = make_db_path ( ) ;
17+ let db = DB :: open_default ( path) . unwrap ( ) ;
18+ return db;
19+ }
20+
1521pub fn put ( k : & str , v : & str ) {
1622 let path = make_db_path ( ) ;
1723 let db = DB :: open_default ( path) . unwrap ( ) ;
1824 db. put ( k, v) . unwrap ( ) ;
19- println ! ( "SET key: {}, value: {}" , k, v) ;
25+ // println!("SET key: {}, value: {}", k, v);
2026}
2127
2228pub fn get ( k : & str ) -> String {
@@ -26,12 +32,34 @@ pub fn get(k: &str) -> String {
2632 match value {
2733 Some ( v) => {
2834 let s = String :: from_utf8 ( v) . unwrap ( ) ;
29- println ! ( "GET SOME key: {}, value: {}" , k, s) ;
35+ // println!("GET SOME key: {}, value: {}", k, s);
3036 return s;
3137 }
3238 None => {
33- println ! ( "GET NONE key: {}, value: None" , k) ;
39+ // println!("GET NONE key: {}, value: None", k);
3440 return String :: from ( "None" ) ;
3541 }
3642 }
3743}
44+
45+ // get all keys
46+ pub fn get_all ( ) -> Vec < String > {
47+ let db = open_db ( ) ;
48+ let mut keys: Vec < String > = Vec :: new ( ) ;
49+ let iterator = db. iterator ( IteratorMode :: Start ) ;
50+ for result in iterator {
51+ let ( key, _) = result. unwrap ( ) ;
52+ let key_str = String :: from_utf8_lossy ( & key) ;
53+ // println!("Key: {}", key_str);
54+ keys. push ( key_str. to_string ( ) ) ;
55+ }
56+ return keys;
57+ }
58+
59+ // remove by key
60+ pub fn remove_key ( k : & str ) {
61+ let path = make_db_path ( ) ;
62+ let db = DB :: open_default ( path) . unwrap ( ) ;
63+ db. delete ( k) . unwrap ( ) ;
64+ // println!("REMOVE key: {}", k);
65+ }
0 commit comments