mirror of
https://github.com/isar/rusqlite.git
synced 2024-11-26 11:31:37 +08:00
Merge pull request #983 from thomcc/value_ref-as_bytes
Add a helper function for getting the byte data from a ValueRef, regardless of if its Text or Blob
This commit is contained in:
commit
b3bd775f90
@ -17,12 +17,8 @@ impl ToSql for Value {
|
|||||||
impl FromSql for Value {
|
impl FromSql for Value {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn column_result(value: ValueRef<'_>) -> FromSqlResult<Self> {
|
fn column_result(value: ValueRef<'_>) -> FromSqlResult<Self> {
|
||||||
match value {
|
let bytes = value.as_bytes()?;
|
||||||
ValueRef::Text(s) => serde_json::from_slice(s),
|
serde_json::from_slice(bytes).map_err(|err| FromSqlError::Other(Box::new(err)))
|
||||||
ValueRef::Blob(b) => serde_json::from_slice(b),
|
|
||||||
_ => return Err(FromSqlError::InvalidType),
|
|
||||||
}
|
|
||||||
.map_err(|err| FromSqlError::Other(Box::new(err)))
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -77,6 +77,16 @@ impl<'a> ValueRef<'a> {
|
|||||||
_ => Err(FromSqlError::InvalidType),
|
_ => Err(FromSqlError::InvalidType),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Returns the byte slice that makes up this ValueRef if it's either
|
||||||
|
/// [`ValueRef::Blob`] or [`ValueRef::Text`].
|
||||||
|
#[inline]
|
||||||
|
pub fn as_bytes(&self) -> FromSqlResult<&'a [u8]> {
|
||||||
|
match self {
|
||||||
|
ValueRef::Text(s) | ValueRef::Blob(s) => Ok(s),
|
||||||
|
_ => Err(FromSqlError::InvalidType),
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<ValueRef<'_>> for Value {
|
impl From<ValueRef<'_>> for Value {
|
||||||
|
Loading…
Reference in New Issue
Block a user