diff options
| author | Owen Jacobson <owen@grimoire.ca> | 2024-10-08 22:10:04 -0400 |
|---|---|---|
| committer | Owen Jacobson <owen@grimoire.ca> | 2024-10-09 11:45:31 -0400 |
| commit | 653e2de752a97e377fc9963ba60d9408e7089528 (patch) | |
| tree | a707919c0c0cb3c84ec3ea624ae8cd87059f28ac /src/message | |
| parent | dd62b823e01934a0f841256fdb17b551091896bf (diff) | |
Flatten nested `channel` and `message` structs in events and API responses.
This structure didn't accomplish anything and made certain refactorings harder.
Diffstat (limited to 'src/message')
| -rw-r--r-- | src/message/event.rs | 2 | ||||
| -rw-r--r-- | src/message/history.rs | 2 | ||||
| -rw-r--r-- | src/message/snapshot.rs | 35 |
3 files changed, 3 insertions, 36 deletions
diff --git a/src/message/event.rs b/src/message/event.rs index 66db9b0..712ecc1 100644 --- a/src/message/event.rs +++ b/src/message/event.rs @@ -55,7 +55,7 @@ pub struct Deleted { #[serde(flatten)] pub instant: Instant, pub channel: Channel, - pub message: Id, + pub id: Id, } impl Sequenced for Deleted { diff --git a/src/message/history.rs b/src/message/history.rs index f267f4c..3c3f77a 100644 --- a/src/message/history.rs +++ b/src/message/history.rs @@ -48,7 +48,7 @@ impl History { kind: Deleted { instant, channel: self.message.channel.clone(), - message: self.message.id.clone(), + id: self.message.id.clone(), } .into(), }) diff --git a/src/message/snapshot.rs b/src/message/snapshot.rs index 522c1aa..a06fbc4 100644 --- a/src/message/snapshot.rs +++ b/src/message/snapshot.rs @@ -5,7 +5,6 @@ use super::{ use crate::{channel::Channel, event::Instant, login::Login}; #[derive(Clone, Debug, Eq, PartialEq, serde::Serialize)] -#[serde(into = "self::serialize::Message")] pub struct Message { #[serde(skip)] pub sent: Instant, @@ -15,43 +14,11 @@ pub struct Message { pub body: String, } -mod serialize { - use crate::{channel::Channel, login::Login, message::Id}; - - #[derive(serde::Serialize)] - pub struct Message { - channel: Channel, - sender: Login, - #[allow(clippy::struct_field_names)] - // Deliberately redundant with the module path; this produces a specific serialization. - message: MessageData, - } - - #[derive(serde::Serialize)] - pub struct MessageData { - id: Id, - body: String, - } - - impl From<super::Message> for Message { - fn from(message: super::Message) -> Self { - Self { - channel: message.channel, - sender: message.sender, - message: MessageData { - id: message.id, - body: message.body, - }, - } - } - } -} - impl Message { fn apply(state: Option<Self>, event: Event) -> Option<Self> { match (state, event.kind) { (None, Kind::Sent(event)) => Some(event.into()), - (Some(message), Kind::Deleted(event)) if message.id == event.message => None, + (Some(message), Kind::Deleted(event)) if message.id == event.id => None, (state, event) => panic!("invalid message event {event:#?} for state {state:#?}"), } } |
