rustorm 0.0.8

An ORM for rust
extern crate rustorm;
extern crate uuid;
extern crate chrono;
extern crate rustc_serialize;

use uuid::Uuid;
use chrono::datetime::DateTime;
use chrono::offset::utc::UTC;

use rustorm::query::Query;
use rustorm::dao::{Dao,IsDao};
use rustorm::pool::Pool;
use rustorm::table::{Table, IsTable, Column};
use rustorm::database::DatabaseDDL;

#[derive(Debug, Clone)]
struct Category {
    pub name:Option<String>,
    pub description:Option<String>,
}

impl IsDao for Category{
    fn from_dao(dao:&Dao)->Self{
        Category{
            name: dao.get_opt("name"),
            description: dao.get_opt("description"),
        }
    }
}



impl IsTable for Category{

    fn table()->Table{
    
        Table{
            schema:"bazaar".to_string(),
            name:"category".to_string(),
            parent_table: None,
            sub_table:vec![],
            comment:None,
            columns:
            vec![
                Column{
                    name:"name".to_string(),
                    data_type:"String".to_string(),
                    db_data_type:"character varying".to_string(),
                    is_primary:false, is_unique:true, not_null:false, is_inherited:true, 
                    default:None,
                    comment:None,
                    foreign:None,
                },
                Column{
                    name:"description".to_string(),
                    data_type:"String".to_string(),
                    db_data_type:"character varying".to_string(),
                    is_primary:false, is_unique:false, not_null:false, is_inherited:true, 
                    default:None,
                    comment:None,
                    foreign:None,
                },
            ],
        }
    }
}


fn main(){
    let mut pool = Pool::init();
    let url = "sqlite:///:memory:";
    let db = pool.from_url(&url).unwrap();
    let result = db.as_ddl().create_table(&Category::table());
    
    let mut query = Query::insert();
    query.into_(&Category::table());
    query.set("name", &"sqlite");
    query.set("description", &"This is inserted into sqlite in memory database");
    query.execute(db.as_ref());
    
    let category: Category = Query::select()
        .columns(vec!["name","description"])
        .from(&Category::table())
        .collect_one(db.as_ref());
    
        println!("Category: {:?}", category);
    
}