deuterium 0.3.1

Deuterium is a fancy SQL builder for Rust. It's designed to provide a DSL to easily build SQL queries in safe and *typed* way.
use deuterium::*;

#[test]
fn delete() {

    let jedi_table = TableDef::new("jedi");
    let name = NamedField::<String>::field_of("name", &jedi_table);

    let query = jedi_table.delete().all();
    assert_sql!(query, "DELETE FROM jedi;");

    let query = jedi_table.delete();
    assert_sql!(query, "DELETE FROM jedi WHERE true = false;");

    let query = jedi_table.delete().where_(name.is("Anakin Skywalker".to_string()));
    assert_sql!(query, "DELETE FROM jedi WHERE name = $1;");

    let table_b = TableDef::new("table_b");
    let name_b = NamedField::<String>::field_of("name", &table_b).qual();

    let query = jedi_table
        .delete()
        .only()
        .using(&table_b)
        .where_(name.qual().is(name_b.qual()));

    assert_sql!(query, "DELETE FROM ONLY jedi USING table_b WHERE jedi.name = table_b.name;");

}


#[test]
fn delete_returning() {

    let jedi_table = TableDef::new("jedi");
    let name = NamedField::<String>::field_of("name", &jedi_table);

    let query: DeleteQuery<(), LimitMany, ()> = jedi_table.delete().all().returning_all();
    assert_sql!(query, "DELETE FROM jedi RETURNING *;");

    let query: DeleteQuery<(String), LimitMany, ()> = jedi_table.delete().all().returning_1(&name);
    assert_sql!(query, "DELETE FROM jedi RETURNING name;")

}