An ORM library for rust
```rust
fn main(){
let pg= Postgres::withconnection("postgres://postgres:p0stgr3s@localhost/bazaarv6");
let products:Vec
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::
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());
```
Follow me on twitter: @ivanceras
This is a 1 man show, so if you feel generous, please support this project at bountysource bountysource
Suggestions are much welcome!