#[cfg(feature = "redis")]
use grapple_db::redis::Client;
pub type Result<T> = core::result::Result<T, Error>;
pub type Error = Box<dyn std::error::Error>;
#[cfg(feature = "redis")]
#[tokio::main]
async fn main() -> Result<()> {
let client = Client::default().await?;
let key1 = "tuple1".to_string();
let key2 = "tuple2".to_string();
let tuple1 = (key1.clone(), "my tuple 1".to_string());
let tuple2 = (key2.clone(), "my tuple 2".to_string());
client.set(&("3213".to_string(), 3)).await?;
println!("{:?}", client.get::<i32>("3213").await?);
assert_eq!("OK", client.mset(&[&tuple1, &tuple2]).await?);
assert!(!client.mset_nx(&[&tuple1, &tuple2]).await?);
assert!(client.exists(&tuple1.0).await?);
assert!(client.exists(&tuple2.0).await?);
println!("Get tuples");
let got_values: Vec<Option<String>> = client.mget([&key1, &key2]).await?;
println!("Multiple {:?}", got_values);
let get1: String = client.get(&key1).await?.unwrap();
println!("Tuple 1: {}", get1);
let get2: String = client.get(&key2).await?.unwrap();
println!("Tuple 2: {}", get2);
println!();
println!("Del tuples");
assert_eq!(2, client.mdel([&key1, &key2]).await?);
println!();
assert!(!client.exists(&key1).await?);
assert!(!client.exists(&key2).await?);
println!("Get after delete");
let get1: Option<String> = client.get(&key1).await?;
println!("Tuple 1: {:?}", get1);
let get2: Option<String> = client.get(&key2).await?;
println!("Tuple 2: {:?}", get2);
Ok(())
}
#[cfg(not(feature = "redis"))]
fn main() {
panic!("This example requires 'redis' enabled feature")
}