diff options
Diffstat (limited to 'meap/actionkv/src')
| -rwxr-xr-x | meap/actionkv/src/akv_mem.rs | 52 | ||||
| -rwxr-xr-x | meap/actionkv/src/lib.rs | 7 | 
2 files changed, 59 insertions, 0 deletions
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<String> = 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), +    } +} diff --git a/meap/actionkv/src/lib.rs b/meap/actionkv/src/lib.rs new file mode 100755 index 0000000..31e1bb2 --- /dev/null +++ b/meap/actionkv/src/lib.rs @@ -0,0 +1,7 @@ +#[cfg(test)] +mod tests { +    #[test] +    fn it_works() { +        assert_eq!(2 + 2, 4); +    } +}  |