use chrono::datetime::DateTime;
use chrono::offset::utc::UTC;
use uuid::Uuid;
use rustorm::dao::Dao;
use rustorm::dao::IsDao;
use rustorm::table::IsTable;
use rustorm::table::Column;
use rustorm::table::Table;
#[derive(RustcDecodable, RustcEncodable)]
#[derive(Debug, Clone)]
pub struct Base {
pub client_id:Option<Uuid>,
pub created:DateTime<UTC>,
pub created_by:Option<Uuid>,
pub organization_id:Option<Uuid>,
pub priority:Option<f64>,
pub updated:DateTime<UTC>,
pub updated_by:Option<Uuid>,
}
#[allow(non_upper_case_globals)]
#[allow(dead_code)]
pub static organization_id: &'static str = "base.organization_id";
#[allow(non_upper_case_globals)]
#[allow(dead_code)]
pub static client_id: &'static str = "base.client_id";
#[allow(non_upper_case_globals)]
#[allow(dead_code)]
pub static created: &'static str = "base.created";
#[allow(non_upper_case_globals)]
#[allow(dead_code)]
pub static created_by: &'static str = "base.created_by";
#[allow(non_upper_case_globals)]
#[allow(dead_code)]
pub static updated: &'static str = "base.updated";
#[allow(non_upper_case_globals)]
#[allow(dead_code)]
pub static updated_by: &'static str = "base.updated_by";
#[allow(non_upper_case_globals)]
#[allow(dead_code)]
pub static priority: &'static str = "base.priority";
impl IsDao for Base{
fn from_dao(dao:&Dao)->Self{
Base{
organization_id: dao.get_opt("organization_id"),
client_id: dao.get_opt("client_id"),
created: dao.get("created"),
created_by: dao.get_opt("created_by"),
updated: dao.get("updated"),
updated_by: dao.get_opt("updated_by"),
priority: dao.get_opt("priority"),
}
}
}
impl IsTable for Base{
fn table()->Table{
Table{
schema:"system".to_string(),
name:"base".to_string(),
parent_table:None,
sub_table:vec!["record".to_string(),"product_availability".to_string(),"product_category".to_string(),"product_photo".to_string(),"product_review".to_string(),],
comment:Some("Base table contains the creation and modification status of a record".to_string()),
columns:
vec![
Column{
name:"organization_id".to_string(),
data_type:"Uuid".to_string(),
db_data_type:"uuid".to_string(),
is_primary:false, is_unique:false, not_null:false, is_inherited:false,
default:None,
comment:None,
foreign:None,
},
Column{
name:"client_id".to_string(),
data_type:"Uuid".to_string(),
db_data_type:"uuid".to_string(),
is_primary:false, is_unique:false, not_null:false, is_inherited:false,
default:None,
comment:None,
foreign:None,
},
Column{
name:"created".to_string(),
data_type:"DateTime<UTC>".to_string(),
db_data_type:"timestamp with time zone".to_string(),
is_primary:false, is_unique:false, not_null:true, is_inherited:false,
default:Some("now()".to_string()),
comment:None,
foreign:None,
},
Column{
name:"created_by".to_string(),
data_type:"Uuid".to_string(),
db_data_type:"uuid".to_string(),
is_primary:false, is_unique:false, not_null:false, is_inherited:false,
default:None,
comment:None,
foreign:None,
},
Column{
name:"updated".to_string(),
data_type:"DateTime<UTC>".to_string(),
db_data_type:"timestamp with time zone".to_string(),
is_primary:false, is_unique:false, not_null:true, is_inherited:false,
default:Some("now()".to_string()),
comment:None,
foreign:None,
},
Column{
name:"updated_by".to_string(),
data_type:"Uuid".to_string(),
db_data_type:"uuid".to_string(),
is_primary:false, is_unique:false, not_null:false, is_inherited:false,
default:None,
comment:None,
foreign:None,
},
Column{
name:"priority".to_string(),
data_type:"f64".to_string(),
db_data_type:"numeric".to_string(),
is_primary:false, is_unique:false, not_null:false, is_inherited:false,
default:None,
comment:Some("priority of saving data and eviction".to_string()),
foreign:None,
},
],
}
}
}