use crate::{AkitaDataError, AkitaValue, ConversionError, FromAkitaValue, IntoAkitaValue};
#[derive(Debug, Clone, PartialEq)]
pub struct Blob(Vec<u8>);
impl From<Vec<u8>> for Blob {
fn from(data: Vec<u8>) -> Self {
Blob(data)
}
}
impl From<Blob> for Vec<u8> {
fn from(blob: Blob) -> Self {
blob.0
}
}
impl FromAkitaValue for Blob {
fn from_value_opt(value: &AkitaValue) -> Result<Self, AkitaDataError> {
match value {
AkitaValue::Blob(data) => Ok(Blob(data.clone())),
AkitaValue::Text(s) => Ok(Blob(s.as_bytes().to_vec())),
_ => Err(AkitaDataError::ConversionError(ConversionError::TypeMismatch {
expected: "Vec<u8>".to_string(),
found: format!("{:?}", value),
})),
}
}
}
impl IntoAkitaValue for Blob {
fn into_value(&self) -> AkitaValue {
AkitaValue::Blob(self.0.clone())
}
}