use crate::{DbErr, EntityTrait, Linked, QueryFilter, QueryResult, Related, Select}; pub use sea_query::Value; use std::fmt::Debug; pub trait ModelTrait: Clone + Send + Debug { type Entity: EntityTrait; fn get(&self, c: ::Column) -> Value; fn set(&mut self, c: ::Column, v: Value); fn find_related(&self, _: R) -> Select where R: EntityTrait, Self::Entity: Related, { >::find_related().belongs_to(self) } fn find_linked(&self, l: L) -> Select where L: Linked, { l.find_linked().belongs_to(self) } } pub trait FromQueryResult { fn from_query_result(res: &QueryResult, pre: &str) -> Result where Self: Sized; fn from_query_result_optional(res: &QueryResult, pre: &str) -> Result, DbErr> where Self: Sized, { Ok(Self::from_query_result(res, pre).ok()) } }