From 2211f324782cdc617b4b5ecd071178e372539fe4 Mon Sep 17 00:00:00 2001 From: cel 🌸 Date: Wed, 26 Mar 2025 14:29:40 +0000 Subject: refactor: rename crates and move client logic to separate crate `filament` --- filamento/src/chat.rs | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 filamento/src/chat.rs (limited to 'filamento/src/chat.rs') diff --git a/filamento/src/chat.rs b/filamento/src/chat.rs new file mode 100644 index 0000000..c1194ea --- /dev/null +++ b/filamento/src/chat.rs @@ -0,0 +1,57 @@ +use chrono::{DateTime, Utc}; +use jid::JID; +use uuid::Uuid; + +#[derive(Debug, sqlx::FromRow, Clone)] +pub struct Message { + pub id: Uuid, + // does not contain full user information + #[sqlx(rename = "from_jid")] + pub from: JID, + pub timestamp: DateTime, + // TODO: originally_from + // TODO: message edits + // TODO: message timestamp + #[sqlx(flatten)] + pub body: Body, +} + +// TODO: user migrations +// pub enum Migrated { +// Jabber(User), +// Outside, +// } + +#[derive(Debug, sqlx::FromRow, Clone)] +pub struct Body { + // TODO: rich text, other contents, threads + pub body: String, +} + +#[derive(sqlx::FromRow, Debug, Clone)] +pub struct Chat { + pub correspondent: JID, + // pub unread_messages: i32, + // pub latest_message: Message, + // when a new message is received, the chat should be updated, and the new message should be delivered too. + // message history is not stored in chat, retreived separately. + // pub message_history: Vec, +} + +pub enum ChatUpdate {} + +impl Chat { + pub fn new(correspondent: JID) -> Self { + Self { correspondent } + } + pub fn correspondent(&self) -> &JID { + &self.correspondent + } +} + +// TODO: group chats +// pub enum Chat { +// Direct(DirectChat), +// Channel(Channel), +// } +// pub struct Channel {} -- cgit