Documentation
use serde::de::DeserializeOwned;
use serde::Serialize;

mod column;
mod context;
mod hooks;
mod query;
mod reference;
mod row;

pub use column::Column;
pub use context::QueryContext;

use edm_core::request::Validation;
use edm_core::JsonMap;

pub use hooks::ModelHooks;
pub trait Model: Default + Serialize + DeserializeOwned {
    /// 创建实例对象
    #[inline]
    fn new() -> Self {
        Self::default()
    }

    /// 使用 `JsonMap`对象更新模型,并且返回一个 `Validation`结果.
    #[must_use]
    fn read_json_map(&mut self, data: &JsonMap) -> Validation {
        let mut validation = Validation::new();
        if data.is_empty() {
            validation.add("data", "数据不能为空.")
        }
        validation
    }
}