use crate::metadata::EntityTypeMeta;
use crate::error::LrefResult;
use crate::provider::DbValue;
use std::collections::HashMap;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum EntityState {
Detached,
Added,
Unchanged,
Modified,
Deleted,
}
pub trait EntityType: Send + Sync + 'static {
fn entity_meta() -> EntityTypeMeta
where
Self: Sized;
fn entity_meta_instance(&self) -> EntityTypeMeta
where
Self: Sized,
{
Self::entity_meta()
}
}
pub trait FromRow: EntityType + Sized {
fn from_row(values: &[String]) -> LrefResult<Self>;
}
pub trait GetKeyValues: EntityType {
fn key_values(&self) -> HashMap<String, DbValue>;
}
pub trait EntitySnapshot: EntityType {
fn snapshot(&self) -> HashMap<String, DbValue>;
}