use crate::MimeType;
use diesel::{
backend::Backend,
deserialize::FromSql,
serialize::{Output, ToSql},
sql_types::Text,
};
use std::str::FromStr;
impl<DB> ToSql<Text, DB> for MimeType
where
DB: Backend,
str: ToSql<Text, DB>,
{
fn to_sql<'b>(&'b self, out: &mut Output<'b, '_, DB>) -> diesel::serialize::Result {
self.mime.to_sql(out)
}
}
impl<DB> FromSql<Text, DB> for MimeType
where
DB: Backend,
String: diesel::deserialize::FromSql<Text, DB>,
{
fn from_sql(bytes: DB::RawValue<'_>) -> diesel::deserialize::Result<Self> {
let s = String::from_sql(bytes)?;
let v = MimeType::from_str(&s)
.map_err(|e| diesel::result::Error::DeserializationError(Box::new(e)))?;
Ok(v)
}
}