use diesel::backend::Backend;
use diesel::deserialize::{self, FromSql};
use diesel::serialize::{self, Output, ToSql};
use diesel::sql_types::Text;
use super::{BlindIndex, Sealed};
impl<DB> ToSql<Text, DB> for Sealed
where
DB: Backend,
String: ToSql<Text, DB>,
{
fn to_sql<'b>(&'b self, out: &mut Output<'b, '_, DB>) -> serialize::Result {
<String as ToSql<Text, DB>>::to_sql(&self.0, out)
}
}
impl<DB> FromSql<Text, DB> for Sealed
where
DB: Backend,
String: FromSql<Text, DB>,
{
fn from_sql(bytes: DB::RawValue<'_>) -> deserialize::Result<Self> {
let envelope = <String as FromSql<Text, DB>>::from_sql(bytes)?;
Self::from_envelope(envelope).map_err(|e| Box::new(e) as Box<_>)
}
}
impl<DB> ToSql<Text, DB> for BlindIndex
where
DB: Backend,
String: ToSql<Text, DB>,
{
fn to_sql<'b>(&'b self, out: &mut Output<'b, '_, DB>) -> serialize::Result {
<String as ToSql<Text, DB>>::to_sql(&self.0, out)
}
}
impl<DB> FromSql<Text, DB> for BlindIndex
where
DB: Backend,
String: FromSql<Text, DB>,
{
fn from_sql(bytes: DB::RawValue<'_>) -> deserialize::Result<Self> {
let token = <String as FromSql<Text, DB>>::from_sql(bytes)?;
Self::from_token(token).map_err(|e| Box::new(e) as Box<_>)
}
}