surrealpatch/lib/src/sql/operation.rs
2022-02-22 14:16:50 +00:00

37 lines
674 B
Rust

use crate::sql::idiom::Idiom;
use crate::sql::value::Value;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Default, Eq, PartialEq, PartialOrd, Serialize, Deserialize)]
pub struct Operation {
pub op: Op,
pub path: Idiom,
pub value: Value,
}
#[derive(Clone, Debug, Eq, PartialEq, PartialOrd, Serialize, Deserialize)]
pub enum Op {
None,
Add,
Remove,
Replace,
Change,
}
impl Default for Op {
fn default() -> Op {
Op::Add
}
}
impl From<&Value> for Op {
fn from(v: &Value) -> Self {
match &v.to_strand().value[..] {
"add" => Op::Add,
"remove" => Op::Remove,
"replace" => Op::Replace,
"change" => Op::Change,
_ => Op::None,
}
}
}