Working example

```rust

extern crate deuterium; extern crate time;

use time::Timespec;

// Please use glob, we need A LOOOT of stuff from Deuterium use deuterium::*;

// All magic is done by compiler plugin. Please note that every field of // FieldType will be converted to Option for partial init // support. deuteriummodel! jedi { pub struct Jedi { id: i32, name: String, forcelevel: i32, side: bool, createdat: Timespec, updatedat: Timespec } }

// Example of custom model methods impl Jedi { pub fn ordered() -> SelectQuery<(), LimitMany, Jedi> { // All fields available as {{field_name}}_f methods Jedi::from().selectall().orderby(&Jedi::createdatf()) } }

fn setuptables(cn: &PostgresConnection) { // DeuteriumORM don't validate schema for now so be carefull cn.batchexecute(r#" DROP TABLE IF EXISTS jedi CASCADE; CREATE TABLE jedi ( id serial PRIMARY KEY, name varchar(40) NOT NULL, forcelevel integer, side boolean, createdat timestamptz DEFAULT CURRENTTIMESTAMP, updatedat timestamptz DEFAULT CURRENT_TIMESTAMP );

    INSERT INTO jedi (name, force_level, side) VALUES
        ('Luke Skywalker', 100, true),
        ('Anakin Skywalker', 100, false);
"#).unwrap();

}

// Setup PostgreSQL connection fn setuppg() -> adapter::postgres::PostgresPool { let manager = PostgresPoolManager::new("postgres://panferov@localhost/jedi", NoSsl); let config = r2d2::Config { poolsize: 5, testoncheck_out: true, ..std::default::Default::default() };

let handler = r2d2::NoopErrorHandler;
r2d2::Pool::new(config, manager, handler).unwrap()

}

fn main() { let pool = setup_pg(); let cn = pool.get().unwrap();

setup_tables(&*cn);

// Get Vec<Jedi> from database
Jedi::ordered().where_(Jedi::name_f().is("Luke Skywalker")).query_list(&*cn);

// Get Option<Jedi> from database
Jedi::ordered().where_(Jedi::name_f().is("Anakin Skywalker")).first().query(&*cn).unwrap();

}

Tests

Please run tests with RUST_TEST_TASKS=1 cargo test