#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
pub enum UpdateValue {
Literal(Vec<u8>),
Expr(nodedb_query::expr::SqlExpr),
}
impl zerompk::ToMessagePack for UpdateValue {
fn write<W: zerompk::Write>(&self, writer: &mut W) -> zerompk::Result<()> {
writer.write_array_len(2)?;
match self {
UpdateValue::Literal(bytes) => {
writer.write_u8(0)?;
bytes.write(writer)
}
UpdateValue::Expr(expr) => {
writer.write_u8(1)?;
expr.write(writer)
}
}
}
}
impl<'a> zerompk::FromMessagePack<'a> for UpdateValue {
fn read<R: zerompk::Read<'a>>(reader: &mut R) -> zerompk::Result<Self> {
reader.check_array_len(2)?;
let tag = reader.read_u8()?;
match tag {
0 => Ok(UpdateValue::Literal(Vec::<u8>::read(reader)?)),
1 => Ok(UpdateValue::Expr(nodedb_query::expr::SqlExpr::read(
reader,
)?)),
_ => Err(zerompk::Error::InvalidMarker(tag)),
}
}
}