From 7e8ee5ed9cad6484e9f13f81731b102ced58402e Mon Sep 17 00:00:00 2001 From: Adam Carpenter Date: Tue, 9 Jul 2019 15:14:04 -0400 Subject: Init. --- meap/actionkv/src/akv_mem.rs | 52 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100755 meap/actionkv/src/akv_mem.rs (limited to 'meap/actionkv/src/akv_mem.rs') diff --git a/meap/actionkv/src/akv_mem.rs b/meap/actionkv/src/akv_mem.rs new file mode 100755 index 0000000..cbcf88c --- /dev/null +++ b/meap/actionkv/src/akv_mem.rs @@ -0,0 +1,52 @@ +extern crate libactionkv; + +use libactionkv::ActionKv; + +#[cfg(target_os = "windows")] +const USAGE: &'static str = " +Usage: + akv_mem.exe FILE get KEY + akv_mem.exe FILE delete KEY + akv_mem.exe FILE insert KEY VALUE + akv_mem.exe FILE update KEY VALUE +"; + +#[cfg(not(target_os = "windows"))] +const USAGE: &'static str = " +Usage: + akv_mem FILE get KEY + akv_mem FILE delete KEY + akv_mem FILE insert KEY VALUE + akv_mem FILE update KEY VALUE +"; + +fn main() { + let args: Vec = std::env::args().collect(); + let fname = args.get(1).expect(&USAGE); + let action = args.get(2).expect(&USAGE).as_ref(); + let key = args.get(3).expect(&USAGE).as_ref(); + let maybe_value = args.get(4); + + let path = std::path::Path::new(&fname); + let mut store = ActionKV::open(path).expect("unable to open file"); + store.load().expect("unable to load data"); + + match action { + "get" => { + match store.get(key).unwrap() { + None => eprintln!("{:?} not found", key), + Some(value) => println!("{:?}", value), + } + }, + "delete" => store.delete(key).unwrap(), + "insert" => { + let value = maybe_value.expect(&USAGE).as_ref(); + store.insert(key, value).unwrap() + }, + "update" => { + let value = maybe_value.expect(&USAGE).as_ref(); + store.update(key, value).unwrap() + }, + _ => eprintln!("{}", &USAGE), + } +} -- cgit v1.2.3