use icydb_core::traits::EntityValue;
pub use icydb_core::traits::{
Add, AddAssign, CanisterKind, Collection, Debug, Default, Deserialize, DeserializeOwned, Div,
DivAssign, EntityCreateInput, EntityCreateMaterialization, EntityCreateType, EntityKey,
EntityKeyBytes, EntityKind, EntityPlacement, EntitySchema, Eq, FieldTypeMeta, From, Hash,
Inner, Kind, MapCollection, Mul, MulAssign, NumericValue, Ordering, PartialEq, Path, Rem,
Sanitize, SanitizeAuto, SanitizeCustom, Sanitizer, Serialize, SingletonEntity, Storable,
StoreKind, Sub, SubAssign, TypeKind, Validate, ValidateAuto, ValidateCustom, Validator,
Visitable,
};
pub trait Entity: icydb_core::db::PersistedRow + EntityValue {}
impl<T> Entity for T where T: icydb_core::db::PersistedRow + EntityValue {}
pub trait EntityFor<C: CanisterKind>: Entity + EntityKind<Canister = C> {}
impl<T, C> EntityFor<C> for T
where
T: Entity + EntityKind<Canister = C>,
C: CanisterKind,
{
}
pub trait CreateInput: EntityCreateInput
where
Self::Entity: Entity,
{
}
impl<T> CreateInput for T
where
T: EntityCreateInput,
T::Entity: Entity,
{
}
pub trait CreateInputFor<C: CanisterKind>: CreateInput
where
Self::Entity: EntityFor<C>,
{
}
impl<T, C> CreateInputFor<C> for T
where
T: CreateInput,
T::Entity: EntityFor<C>,
C: CanisterKind,
{
}