1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
use rocksdb::{DBWithThreadMode, MultiThreaded};
use std::{path::PathBuf, sync::Arc};
pub type DB = DBWithThreadMode<MultiThreaded>;
pub fn open_db(db_path: PathBuf, create_if_missing: bool, parallelism: usize) -> Arc<DB> {
let mut opts = rocksdb::Options::default();
if parallelism > 1 {
opts.increase_parallelism(parallelism as i32);
}
opts.create_if_missing(create_if_missing);
let db = Arc::new(DB::open(&opts, db_path.to_str().unwrap()).unwrap());
db
}
pub fn delete_db(db_dir: PathBuf) {
if !db_dir.exists() {
return;
}
let options = rocksdb::Options::default();
let path = db_dir.to_str().unwrap();
DB::destroy(&options, path).expect("DB is expected to be deletable");
}