use sea_orm::ActiveValue;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum DeltaField<T> {
Set(T),
NotSet,
}
impl<T> DeltaField<T>
where
T: PartialEq + Clone,
{
pub fn new(from: &T, to: &T) -> Self {
if from == to {
return DeltaField::NotSet;
} else {
return DeltaField::Set(to.clone());
}
}
pub fn unwrap_ref(&self) -> &T {
match self {
DeltaField::Set(val) => val,
DeltaField::NotSet => panic!("DeltaField::NotSet"),
}
}
}
impl<T> Into<ActiveValue<T>> for DeltaField<T>
where
T: Into<sea_orm::Value>,
{
fn into(self) -> ActiveValue<T> {
match self {
DeltaField::Set(val) => ActiveValue::Set(val),
DeltaField::NotSet => ActiveValue::NotSet,
}
}
}