Refactor ActiveValue

This commit is contained in:
Chris Tsang 2021-05-30 18:49:29 +08:00
parent fcc668399d
commit 48a5500670

View File

@ -4,7 +4,7 @@ use std::fmt::Debug;
#[derive(Clone, Debug, Default)] #[derive(Clone, Debug, Default)]
pub struct ActiveValue<V> pub struct ActiveValue<V>
where where
V: Default, V: Into<Value> + Default,
{ {
value: V, value: V,
state: ActiveValueState, state: ActiveValueState,
@ -39,7 +39,7 @@ where
#[doc(hidden)] #[doc(hidden)]
pub fn unchanged_active_value_not_intended_for_public_use<V>(value: V) -> ActiveValue<V> pub fn unchanged_active_value_not_intended_for_public_use<V>(value: V) -> ActiveValue<V>
where where
V: Default, V: Into<Value> + Default,
{ {
ActiveValue::unchanged(value) ActiveValue::unchanged(value)
} }
@ -64,7 +64,7 @@ pub trait ActiveModelTrait: Clone + Debug + Default {
impl<V> ActiveValue<V> impl<V> ActiveValue<V>
where where
V: Default, V: Into<Value> + Default,
{ {
pub fn set(value: V) -> Self { pub fn set(value: V) -> Self {
Self { Self {
@ -103,21 +103,7 @@ where
pub fn unwrap(self) -> V { pub fn unwrap(self) -> V {
self.value self.value
} }
}
impl<V> std::convert::AsRef<V> for ActiveValue<V>
where
V: Default,
{
fn as_ref(&self) -> &V {
&self.value
}
}
impl<V> ActiveValue<V>
where
V: Default + Into<Value>,
{
pub fn into_value(self) -> Value { pub fn into_value(self) -> Value {
self.value.into() self.value.into()
} }
@ -131,6 +117,15 @@ where
} }
} }
impl<V> std::convert::AsRef<V> for ActiveValue<V>
where
V: Into<Value> + Default,
{
fn as_ref(&self) -> &V {
&self.value
}
}
impl<A> OneOrManyActiveModel<A> for A impl<A> OneOrManyActiveModel<A> for A
where where
A: ActiveModelTrait, A: ActiveModelTrait,