use super::Value;
#[derive(Clone, Debug, PartialEq)]
pub enum ActiveValue<V>
where
V: Into<Value> + Clone,
{
Changed(V, Option<Box<ActiveValue<V>>>),
Unchanged(V),
NotSet,
}
impl<V> ActiveValue<V>
where
V: Into<Value> + Clone,
{
pub fn set(v: V) -> Self {
Self::Changed(v, None)
}
pub fn change(&mut self, v: V) -> &mut Self {
match self {
Self::Changed(_, ov) => {
*self = ActiveValue::Changed(v, ov.clone());
}
Self::Unchanged(ov) => *self = ActiveValue::Changed(v, Some(Box::new(Self::Unchanged(ov.clone())))),
Self::NotSet => *self = ActiveValue::Changed(v, Some(Box::new(Self::NotSet))),
}
self
}
}