summaryrefslogtreecommitdiff
path: root/src/message
diff options
context:
space:
mode:
authorOwen Jacobson <owen@grimoire.ca>2024-10-08 22:10:04 -0400
committerOwen Jacobson <owen@grimoire.ca>2024-10-09 11:45:31 -0400
commit653e2de752a97e377fc9963ba60d9408e7089528 (patch)
treea707919c0c0cb3c84ec3ea624ae8cd87059f28ac /src/message
parentdd62b823e01934a0f841256fdb17b551091896bf (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.rs2
-rw-r--r--src/message/history.rs2
-rw-r--r--src/message/snapshot.rs35
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:#?}"),
}
}