aboutsummaryrefslogtreecommitdiffstats
path: root/jid
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--jid/Cargo.toml2
-rw-r--r--jid/src/lib.rs61
2 files changed, 33 insertions, 30 deletions
diff --git a/jid/Cargo.toml b/jid/Cargo.toml
index 439ef75..58d59a4 100644
--- a/jid/Cargo.toml
+++ b/jid/Cargo.toml
@@ -6,9 +6,11 @@ edition = "2021"
[features]
# default = []
rusqlite = ["dep:rusqlite"]
+serde = ["dep:serde"]
# sqlx = ["dep:sqlx"]
[dependencies]
+serde = { workspace = true, features = ["derive"], optional = true }
rusqlite = { git = "https://github.com/Spxg/rusqlite.git", optional = true, branch = "wasm-demo" }
# sqlx = { version = "0.8.3", features = ["sqlite"], optional = true }
# sqlx = { path = "../../remote/sqlx", features = ["sqlite"], optional = true }
diff --git a/jid/src/lib.rs b/jid/src/lib.rs
index 9301f59..47ca497 100644
--- a/jid/src/lib.rs
+++ b/jid/src/lib.rs
@@ -1,9 +1,10 @@
use std::{borrow::Cow, error::Error, fmt::Display, str::FromStr};
-#[cfg(feature = "sqlx")]
-use sqlx::Sqlite;
+// #[cfg(feature = "sqlx")]
+// use sqlx::Sqlite;
#[derive(PartialEq, Debug, Clone, Eq, Hash)]
+#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct JID {
// TODO: validate localpart (length, char]
pub localpart: Option<String>,
@@ -56,34 +57,34 @@ impl From<ParseError> for rusqlite::types::FromSqlError {
}
}
-#[cfg(feature = "sqlx")]
-impl sqlx::Type<Sqlite> for JID {
- fn type_info() -> <Sqlite as sqlx::Database>::TypeInfo {
- <&str as sqlx::Type<Sqlite>>::type_info()
- }
-}
-
-#[cfg(feature = "sqlx")]
-impl sqlx::Decode<'_, Sqlite> for JID {
- fn decode(
- value: <Sqlite as sqlx::Database>::ValueRef<'_>,
- ) -> Result<Self, sqlx::error::BoxDynError> {
- let value = <&str as sqlx::Decode<Sqlite>>::decode(value)?;
-
- Ok(value.parse()?)
- }
-}
-
-#[cfg(feature = "sqlx")]
-impl sqlx::Encode<'_, Sqlite> for JID {
- fn encode_by_ref(
- &self,
- buf: &mut <Sqlite as sqlx::Database>::ArgumentBuffer<'_>,
- ) -> Result<sqlx::encode::IsNull, sqlx::error::BoxDynError> {
- let jid = self.to_string();
- <String as sqlx::Encode<Sqlite>>::encode(jid, buf)
- }
-}
+// #[cfg(feature = "sqlx")]
+// impl sqlx::Type<Sqlite> for JID {
+// fn type_info() -> <Sqlite as sqlx::Database>::TypeInfo {
+// <&str as sqlx::Type<Sqlite>>::type_info()
+// }
+// }
+
+// #[cfg(feature = "sqlx")]
+// impl sqlx::Decode<'_, Sqlite> for JID {
+// fn decode(
+// value: <Sqlite as sqlx::Database>::ValueRef<'_>,
+// ) -> Result<Self, sqlx::error::BoxDynError> {
+// let value = <&str as sqlx::Decode<Sqlite>>::decode(value)?;
+
+// Ok(value.parse()?)
+// }
+// }
+
+// #[cfg(feature = "sqlx")]
+// impl sqlx::Encode<'_, Sqlite> for JID {
+// fn encode_by_ref(
+// &self,
+// buf: &mut <Sqlite as sqlx::Database>::ArgumentBuffer<'_>,
+// ) -> Result<sqlx::encode::IsNull, sqlx::error::BoxDynError> {
+// let jid = self.to_string();
+// <String as sqlx::Encode<Sqlite>>::encode(jid, buf)
+// }
+// }
#[derive(Debug, Clone)]
pub enum JIDError {