mod field;
mod resolve;
pub use field::Field;
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct Model {
pub table: String,
pub module: String,
pub name: String,
pub fields: Vec<Field>,
}
impl Model {
pub fn key(&self) -> Option<&Field> {
let mut keys = self.fields.iter().filter(|field| field.primary_key);
let first = keys.next()?;
if keys.next().is_some() {
return None;
}
Some(first)
}
pub fn insertable(&self) -> Vec<&Field> {
self.fields.iter().filter(|f| f.insertable()).collect()
}
pub fn updatable(&self) -> Vec<&Field> {
self.fields.iter().filter(|f| f.updatable()).collect()
}
pub fn required(&self) -> Vec<&Field> {
self.fields.iter().filter(|f| f.required()).collect()
}
}