use liboxia::client::Client;
use liboxia::client_builder::OxiaClientBuilder;
use log::info;
use tracing::level_filters::LevelFilter;
#[tokio::main]
async fn main() {
tracing_subscriber::fmt()
.with_env_filter(
tracing_subscriber::EnvFilter::builder()
.with_default_directive(LevelFilter::INFO.into())
.from_env_lossy(),
)
.with_target(false)
.init();
let client = OxiaClientBuilder::new().build().await.unwrap();
let key1 = String::from("key1");
let key2 = String::from("key2");
let key3 = String::from("key3");
let payload = "payload".to_string().into_bytes();
let put_result = client.put(key1.clone(), payload.clone()).await.unwrap();
info!(
"put the value. key {:?} value {:?} version {:?}",
put_result.key, payload, put_result.version
);
let put_result = client.put(key2.clone(), payload.clone()).await.unwrap();
info!(
"put the value. key {:?} value {:?} version {:?}",
put_result.key, payload, put_result.version
);
let put_result = client.put(key3.clone(), payload.clone()).await.unwrap();
info!(
"put the value. key {:?} value {:?} version {:?}",
put_result.key, payload, put_result.version
);
let list_result = client.list("".to_string(), "/".to_string()).await.unwrap();
info!("list the keys. keys {:?}", list_result.keys);
let range_scan_result = client
.range_scan("".to_string(), "/".to_string())
.await
.unwrap();
info!("range_scan result: {:?}", range_scan_result);
let get_result = client.get(key1.clone()).await.unwrap();
info!(
"get the value. key {:?} value {:?} version {:?}",
get_result.key, get_result.value, get_result.version
);
client.delete(key1.clone()).await.unwrap();
info!("deleted the key-1. key {:?} ", key1.clone());
let result = client.get(key1.clone()).await;
info!("get the value again. error: {:?}", result.unwrap_err());
client
.delete_range("".to_string(), "/".to_string())
.await
.unwrap();
info!("delete range keys.");
let list_result = client.list("".to_string(), "/".to_string()).await.unwrap();
info!("list the keys. keys {:?}", list_result.keys);
client.shutdown().await.unwrap();
}