Rustorm

Latest Version Build Status

An ORM library for rust

Features

Documentation

Example

```rust

fn main(){ let pg= Postgres::withconnection("postgres://postgres:p0stgr3s@localhost/bazaarv6"); let products:Vec = Query::select() .enumeratetableall_columns(&Product::table()) .from::() .collect(&pg);

for prod in products{
    println!("{}  {}  {:?}", prod.product_id, prod.name.unwrap(), prod.description);
}

}

```

```rust

fn main(){ let pg= Postgres::withconnection("postgres://postgres:p0stgr3s@localhost/bazaarv6"); let photo: Photo = Query::select() .from::() .leftjoin(&ProductPhoto::table(), product::productid, productphoto::productid) .leftjoin(&Photo::table(), productphoto::photoid, photo::photoid) .filter(product::name, Equality::EQ, &"GTX660 Ti videocard") .collect_one(&pg); println!("debug: {:?}", photo); } ```

rust fn main(){ let pg= Postgres::with_connection("postgres://postgres:p0stgr3s@localhost/bazaar_v6"); let em = EntityManager::new(&pg); let pid = Uuid::parse_str("6db712e6-cc50-4c3a-8269-451c98ace5ad").unwrap(); let prod: Product = em.get_exact(&pid); println!("{} {} {:?}", prod.product_id, prod.name.unwrap(), prod.description); }

```rust

let pg = Postgres::new();
let mut query = Query::select();
query.from::<Product>()
    .enumerate_table_all_columns(&Photo::table())
    .left_join(&ProductCategory::table(),
        product_category::product_id, product::product_id)
     .left_join(&Category::table(),
        category::category_id, product_category::category_id)
    .left_join(&ProductPhoto::table(),
        product::product_id, product_photo::product_id)
    .left_join(&Photo::table(), 
        product_photo::photo_id, photo::photo_id)
    .filter(product::name, Equality::EQ, &"GTX660 Ti videocard")
    .filter(category::name, Equality::EQ, &"Electronic")
    .group_by(vec![category::name])
    .having("count(*)", Equality::GT, &1)
    .asc(product::name)
    .desc(product::created)
    ;
let frag = query.build(&pg);

let expected = "

SELECT photo.organizationid, photo.clientid, photo.created, photo.createdby, photo.updated, photo.updatedby, photo.priority, photo.name, photo.description, photo.help, photo.active, photo.photoid, photo.url, photo.data, photo.seqno FROM bazaar.product LEFT OUTER JOIN bazaar.productcategory ON productcategory.productid = product.productid LEFT OUTER JOIN bazaar.category ON category.categoryid = productcategory.categoryid LEFT OUTER JOIN bazaar.productphoto ON product.productid = productphoto.productid LEFT OUTER JOIN bazaar.photo ON productphoto.photoid = photo.photoid WHERE product.name = $1 AND category.name = $2 GROUP BY category.name HAVING count(*) > $3 ORDER BY product.name ASC, product.created DESC".to_string(); println!("actual: {{{}}} [{}]", frag.sql, frag.sql.len()); println!("expected: {{{}}} [{}]", expected, expected.len()); assert!(frag.sql.trim() == expected.trim());

```

Roadmap

For Updates

Follow me on twitter: @ivanceras

Support this project