database 0.2.0

The package provides a relational database.
extern crate database;

use database::driver::{SQLite, Statement};
use database::statement::{CreateTable, InsertInto, Select};
use database::{Database, Type, Value};

#[test]
fn workflow() {
    let database: Database<SQLite> = Database::open(":memory:").unwrap();

    let statement = CreateTable::new().name("foo")
                                      .if_not_exists()
                                      .column(|column| column.name("bar").kind(Type::Float))
                                      .column(|column| column.name("baz").kind(Type::Integer));
    database.execute(statement).unwrap();

    let statement = InsertInto::new().table("foo").column("bar").column("baz").multiplex(3);
    let mut statement = database.prepare(statement).unwrap();
    statement.execute(&[Value::Float(42.0), Value::Integer(69),
                        Value::Float(43.0), Value::Integer(70),
                        Value::Float(44.0), Value::Integer(71)]).unwrap();

    let statement = Select::new().table("foo");
    let mut statement = database.prepare(statement).unwrap();
    statement.execute(&[]).unwrap();

    let mut i = 0;
    while let Some(record) = statement.next().unwrap() {
        assert_eq!(record[0], Value::Float(42.0 + i as f64));
        assert_eq!(record[1], Value::Integer(69 + i as i64));
        i += 1;
    }
}