diff options
Diffstat (limited to '')
| -rw-r--r-- | jid/src/lib.rs | 23 | 
1 files changed, 23 insertions, 0 deletions
| diff --git a/jid/src/lib.rs b/jid/src/lib.rs index 8f297c6..9301f59 100644 --- a/jid/src/lib.rs +++ b/jid/src/lib.rs @@ -33,6 +33,29 @@ impl Display for JID {      }  } +#[cfg(feature = "rusqlite")] +impl rusqlite::ToSql for JID { +    fn to_sql(&self) -> rusqlite::Result<rusqlite::types::ToSqlOutput<'_>> { +        Ok(rusqlite::types::ToSqlOutput::Owned( +            rusqlite::types::Value::Text(self.to_string()), +        )) +    } +} + +#[cfg(feature = "rusqlite")] +impl rusqlite::types::FromSql for JID { +    fn column_result(value: rusqlite::types::ValueRef<'_>) -> rusqlite::types::FromSqlResult<Self> { +        Ok(JID::from_str(value.as_str()?)?) +    } +} + +#[cfg(feature = "rusqlite")] +impl From<ParseError> for rusqlite::types::FromSqlError { +    fn from(value: ParseError) -> Self { +        Self::Other(Box::new(value)) +    } +} +  #[cfg(feature = "sqlx")]  impl sqlx::Type<Sqlite> for JID {      fn type_info() -> <Sqlite as sqlx::Database>::TypeInfo { | 
