orientdb-client 0.6.0

A Rust client for OrientDB™
Documentation
extern crate orientdb_client;

use orientdb_client::{DatabaseType, OrientDB};

#[derive(Debug)]
struct Person {
    name: String,
    surname: String,
}

#[allow(unused_must_use)]
fn main() {
    let client =
        OrientDB::connect(("localhost", 2424)).expect("Failed to connect to OrientDB instance");
    let db = "simple-session";

    let exists = client
        .exist_database(db, "root", "root", DatabaseType::Memory)
        .unwrap();
    if exists {
        client
            .drop_database(db, "root", "root", DatabaseType::Memory)
            .unwrap();
    }

    client
        .create_database(db, "root", "root", DatabaseType::Memory)
        .unwrap();

    let session = client
        .session(db, "admin", "admin")
        .expect("Unable to open a session");

    session
        .command("create class Person extends V")
        .run()
        .unwrap();

    session
        .command("create property Person.name string")
        .run()
        .unwrap();
    session
        .command("create property Person.surname string")
        .run()
        .unwrap();

    let person = Person {
        name: String::from("John"),
        surname: String::from("Reese"),
    };

    session
        .command("insert into Person set name = ? , surname = ?")
        .positional(&[&person.name, &person.surname])
        .run()
        .unwrap();

    for res in session
        .query("select from Person")
        .run()
        .expect("Unable to query the class Foo")
    {
        let r = res.unwrap();
        let person = Person {
            name: r.get("name"),
            surname: r.get("surname"),
        };
        println!("{:?}", person);
    }

    let results = session
        .query("select from Person")
        .run()
        .expect("Unable to query the class Foo")
        .map(|e| {
            e.map(|i| Person {
                name: i.get("name"),
                surname: i.get("surname"),
            })
        })
        .collect::<Result<Vec<Person>, _>>();

    println!("{:?}", results);

    session.close();
}