aboutsummaryrefslogtreecommitdiffstats
path: root/filamento/src/chat.rs
diff options
context:
space:
mode:
authorLibravatar cel 🌸 <cel@bunny.garden>2025-04-17 11:24:43 +0100
committerLibravatar cel 🌸 <cel@bunny.garden>2025-04-17 11:24:43 +0100
commit26d0ee51e232b793bc83ba565c0e9ab820d8d0db (patch)
tree26596552b1c7692fe9b4c95a9b254299273f2432 /filamento/src/chat.rs
parentb9d75f38743113c054be3d97af36bdd2a7dd0d69 (diff)
downloadluz-26d0ee51e232b793bc83ba565c0e9ab820d8d0db.tar.gz
luz-26d0ee51e232b793bc83ba565c0e9ab820d8d0db.tar.bz2
luz-26d0ee51e232b793bc83ba565c0e9ab820d8d0db.zip
feat(filamento): remove sqlx
Diffstat (limited to 'filamento/src/chat.rs')
-rw-r--r--filamento/src/chat.rs51
1 files changed, 3 insertions, 48 deletions
diff --git a/filamento/src/chat.rs b/filamento/src/chat.rs
index 147c7f7..557b42b 100644
--- a/filamento/src/chat.rs
+++ b/filamento/src/chat.rs
@@ -1,13 +1,11 @@
use chrono::{DateTime, Utc};
use jid::JID;
-use sqlx::Sqlite;
use uuid::Uuid;
-#[derive(Debug, sqlx::FromRow, Clone)]
+#[derive(Debug, Clone)]
pub struct Message {
pub id: Uuid,
// does not contain full user information
- #[sqlx(rename = "from_jid")]
// bare jid (for now)
pub from: JID,
pub delivery: Option<Delivery>,
@@ -15,7 +13,6 @@ pub struct Message {
// TODO: originally_from
// TODO: message edits
// TODO: message timestamp
- #[sqlx(flatten)]
pub body: Body,
}
@@ -30,61 +27,19 @@ pub enum Delivery {
Queued,
}
-impl sqlx::Type<Sqlite> for Delivery {
- fn type_info() -> <Sqlite as sqlx::Database>::TypeInfo {
- <&str as sqlx::Type<Sqlite>>::type_info()
- }
-}
-
-impl sqlx::Decode<'_, Sqlite> for Delivery {
- fn decode(
- value: <Sqlite as sqlx::Database>::ValueRef<'_>,
- ) -> Result<Self, sqlx::error::BoxDynError> {
- let value = <&str as sqlx::Decode<Sqlite>>::decode(value)?;
- match value {
- "sending" => Ok(Self::Sending),
- "written" => Ok(Self::Written),
- "sent" => Ok(Self::Sent),
- "delivered" => Ok(Self::Delivered),
- "read" => Ok(Self::Read),
- "failed" => Ok(Self::Failed),
- "queued" => Ok(Self::Queued),
- _ => unreachable!(),
- }
- }
-}
-
-impl sqlx::Encode<'_, Sqlite> for Delivery {
- fn encode_by_ref(
- &self,
- buf: &mut <Sqlite as sqlx::Database>::ArgumentBuffer<'_>,
- ) -> Result<sqlx::encode::IsNull, sqlx::error::BoxDynError> {
- let value = match self {
- Delivery::Sending => "sending",
- Delivery::Written => "written",
- Delivery::Sent => "sent",
- Delivery::Delivered => "delivered",
- Delivery::Read => "read",
- Delivery::Failed => "failed",
- Delivery::Queued => "queued",
- };
- <&str as sqlx::Encode<Sqlite>>::encode(value, buf)
- }
-}
-
// TODO: user migrations
// pub enum Migrated {
// Jabber(User),
// Outside,
// }
-#[derive(Debug, sqlx::FromRow, Clone)]
+#[derive(Debug, Clone)]
pub struct Body {
// TODO: rich text, other contents, threads
pub body: String,
}
-#[derive(sqlx::FromRow, Debug, Clone)]
+#[derive(Debug, Clone)]
pub struct Chat {
pub correspondent: JID,
pub have_chatted: bool,