rustorm 0.7.0

An ORM for rust
Documentation
use table::Table;
use query::Filter;
use query::table_name::{TableName,ToTableName};


#[derive(Debug)]
#[derive(Clone)]
pub enum JoinType {
    CROSS,
    INNER,
    OUTER,
    NATURAL,
}
#[derive(Debug)]
#[derive(Clone)]
pub enum Modifier {
    LEFT,
    RIGHT,
    FULL,
}

#[derive(Debug)]
#[derive(Clone)]
pub struct Join {
    pub modifier: Option<Modifier>,
    pub join_type: Option<JoinType>,
    pub table_name: TableName,
    pub on: Filter,
}


pub trait ToJoin {
    fn ON(&self, filter: Filter) -> Join;
}

impl<F> ToJoin for F
    where F: Fn() -> Table
{
    fn ON(&self, filter: Filter) -> Join {
        let table = self();
        Join {
            modifier: None,
            join_type: None,
            table_name: table.to_table_name(),
            on: filter,
        }
    }
}

impl<'a> ToJoin for &'a str {
    fn ON(&self, filter: Filter) -> Join {
        Join {
            modifier: None,
            join_type: None,
            table_name: self.to_table_name(),
            on: filter,
        }
    }
}