arangors 0.6.0

Rust driver for ArangoDB
Documentation
#![allow(unused_imports)]
#![allow(unused_parens)]

use anyhow::Error;
use arangors::{
    transaction::{TransactionCollections, TransactionSettings},
    Connection, Document,
};
use log::info;
use serde_json::{json, Value};

const URL: &str = "http://localhost:8529";

#[cfg_attr(feature = "reqwest_async", tokio::main)]
#[cfg_attr(feature = "surf_async", async_std::main)]
#[cfg_attr(feature = "reqwest_blocking", maybe_async::must_be_sync)]
async fn main() -> Result<(), Error> {
    let conn = Connection::establish_jwt(URL, "username", "password").await?;
    let database = conn.db("test_db").await?;

    let tx = database
        .begin_transaction(
            TransactionSettings::builder()
                .lock_timeout(60000)
                .wait_for_sync(true)
                .collections(
                    TransactionCollections::builder()
                        .write(vec!["test_collection".to_owned()])
                        .build(),
                )
                .build(),
        )
        .await?;

    let transactions = database.list_transactions().await?;
    info!("Transactions: {:?}", transactions);

    let test_doc: Document<Value> = Document::new(json!({
        "user_name":"test21",
        "user_name":"test21_pwd",
    }));

    let collection = tx.collection("test_collection").await?;
    let document = collection
        .create_document(test_doc, Default::default())
        .await?;
    let header = document.header().unwrap();
    let _key = &header._key;

    info!("Key: {}", _key);
    tx.abort().await?;

    Ok(())
}