use anyhow::Result;
use engula_client::{Any, Blob, List, Universe, I64};
#[tokio::main]
async fn main() -> Result<()> {
let url = "http://localhost:21716";
let uv = Universe::connect(url).await?;
let db = uv.create_database("list").await?;
{
let c = db.create_collection::<List<Any>>("list<any>").await?;
println!("{}", c.name());
let mut txn = c.object("o").begin();
txn.store(vec![1.into(), 2.into()])
.push_back("3")
.push_front("0");
txn.commit().await?;
println!("o = {:?}", c.object("o").load().await?);
println!("o.len = {:?}", c.object("o").len().await?);
}
{
let c = db.create_collection::<List<I64>>("list<i64>").await?;
println!("{}", c.name());
c.set("o", [1, 2]).await?;
println!("o = {:?}", c.get("o").await?);
c.object("o").push_back(3).await?;
c.object("o").push_front(0).await?;
println!("o = {:?}", c.object("o").load().await?);
println!("o.len = {:?}", c.object("o").len().await?);
}
{
let c = db.create_collection::<List<Blob>>("list<blob>").await?;
println!("{}", c.name());
c.set("o", [vec![1, 2], vec![3, 4]]).await?;
println!("o = {:?}", c.get("o").await?);
c.object("o").push_back(vec![5, 6]).await?;
c.object("o").push_front(vec![0]).await?;
println!("o = {:?}", c.object("o").load().await?);
println!("o.len = {:?}", c.object("o").len().await?);
}
Ok(())
}