Skip to main content

Model

Trait Model 

Source
pub trait Model:
    Serialize
    + for<'de> Deserialize<'de>
    + Send
    + Sync {
    // Required method
    fn meta() -> ModelMeta;

    // Provided methods
    fn collection_name() -> String { ... }
    fn database_alias() -> Option<String> { ... }
    fn validate(&self) -> QuickDbResult<()> { ... }
    fn to_data_map_direct(&self) -> QuickDbResult<HashMap<String, DataValue>> { ... }
    fn to_data_map_legacy(&self) -> QuickDbResult<HashMap<String, DataValue>> { ... }
    fn to_data_map(&self) -> QuickDbResult<HashMap<String, DataValue>> { ... }
    fn to_data_map_with_types(
        &self,
    ) -> QuickDbResult<HashMap<String, DataValue>> { ... }
    fn to_data_map_with_types_json(
        &self,
    ) -> QuickDbResult<HashMap<String, JsonValue>> { ... }
    fn from_data_map(data: HashMap<String, DataValue>) -> QuickDbResult<Self> { ... }
}
Expand description

模型特征

所有模型都必须实现这个特征

Required Methods§

Source

fn meta() -> ModelMeta

获取模型元数据

Provided Methods§

Source

fn collection_name() -> String

获取集合/表名

Source

fn database_alias() -> Option<String>

获取数据库别名

Source

fn validate(&self) -> QuickDbResult<()>

验证模型数据

Source

fn to_data_map_direct(&self) -> QuickDbResult<HashMap<String, DataValue>>

转换为数据映射(直接转换,避免 JSON 序列化开销) 子类应该重写此方法以提供高性能的直接转换

Source

fn to_data_map_legacy(&self) -> QuickDbResult<HashMap<String, DataValue>>

转换为数据映射(传统 JSON 序列化方式) 保留此方法用于向后兼容和调试

Source

fn to_data_map(&self) -> QuickDbResult<HashMap<String, DataValue>>

将模型转换为数据映射(高性能版本)

Source

fn to_data_map_with_types(&self) -> QuickDbResult<HashMap<String, DataValue>>

将模型转换为带类型信息的数据映射(专门用于 PyO3 兼容序列化) 对于 None 值,会根据字段类型生成带类型标签的 DataValue

Source

fn to_data_map_with_types_json( &self, ) -> QuickDbResult<HashMap<String, JsonValue>>

将模型转换为带类型信息的 JSON 映射(专门用于 PyO3 兼容序列化) 对于 None 值,会根据字段类型生成带类型标签的 JsonValue 这个方法直接返回 JsonValue,避免 DataValue 的额外嵌套

Source

fn from_data_map(data: HashMap<String, DataValue>) -> QuickDbResult<Self>

从数据映射创建模型实例

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§