Rustorm is an SQL-centered ORM with focus on ease of use on conversion of database types to their appropriate rust type.
Selecting records
```rust
extern crate rustormcodegen; extern crate rustormdao as dao; extern crate rustormdao; extern crate rustorm; use rustorm::TableName; use rustormdao::ToColumnNames; use rustormdao::ToTableName; use rustormdao::{FromDao, ToDao}; use rustorm::Pool; use rustorm::DbError;
struct Actor { actorid: i32, firstname: String, }
fn main(){
let dburl = "postgres://postgres:p0stgr3s@localhost/sakila";
let mut pool = Pool::new();
let em = pool.em(dburl).unwrap();
let sql = "SELECT * FROM actor LIMIT 10";
let actors: Result
```rust
extern crate rustormcodegen; extern crate rustormdao as dao; extern crate rustorm_dao; extern crate rustorm; extern crate chrono;
use rustorm::TableName; use rustormdao::ToColumnNames; use rustormdao::ToTableName; use rustorm_dao::{FromDao, ToDao}; use rustorm::Pool; use rustorm::DbError; use chrono::offset::Utc; use chrono::{DateTime, NaiveDate};
fn main() { mod forinsert { use super::*; #[derive(Debug, PartialEq, ToDao, ToColumnNames, ToTableName)] pub struct Actor { pub firstname: String, pub last_name: String, } }
mod for_retrieve {
use super::*;
#[derive(Debug, FromDao, ToColumnNames, ToTableName)]
pub struct Actor {
pub actor_id: i32,
pub first_name: String,
pub last_name: String,
pub last_update: DateTime<Utc>,
}
}
let db_url = "postgres://postgres:p0stgr3s@localhost/sakila";
let mut pool = Pool::new();
let em = pool.em(db_url).unwrap();
let tom_cruise = for_insert::Actor {
first_name: "TOM".into(),
last_name: "CRUISE".to_string(),
};
let tom_hanks = for_insert::Actor {
first_name: "TOM".into(),
last_name: "HANKS".to_string(),
};
let actors: Result<Vec<for_retrieve::Actor>, DbError> =
em.insert(&[&tom_cruise, &tom_hanks]);
println!("Actor: {:#?}", actors);
assert!(actors.is_ok());
let actors = actors.unwrap();
let today = Utc::now().date();
assert_eq!(tom_cruise.first_name, actors[0].first_name);
assert_eq!(tom_cruise.last_name, actors[0].last_name);
assert_eq!(today, actors[0].last_update.date());
assert_eq!(tom_hanks.first_name, actors[1].first_name);
assert_eq!(tom_hanks.last_name, actors[1].last_name);
assert_eq!(today, actors[1].last_update.date());
} ``` Rustorm is wholly used by diwata
License: MIT