summaryrefslogtreecommitdiff
path: root/src/message
diff options
context:
space:
mode:
Diffstat (limited to 'src/message')
-rw-r--r--src/message/event.rs22
-rw-r--r--src/message/history.rs14
-rw-r--r--src/message/snapshot.rs10
3 files changed, 16 insertions, 30 deletions
diff --git a/src/message/event.rs b/src/message/event.rs
index 712ecc1..9f49a32 100644
--- a/src/message/event.rs
+++ b/src/message/event.rs
@@ -5,25 +5,13 @@ use crate::{
};
#[derive(Clone, Debug, Eq, PartialEq, serde::Serialize)]
-pub struct Event {
- #[serde(flatten)]
- pub kind: Kind,
-}
-
-impl Sequenced for Event {
- fn instant(&self) -> Instant {
- self.kind.instant()
- }
-}
-
-#[derive(Clone, Debug, Eq, PartialEq, serde::Serialize)]
-#[serde(tag = "type", rename_all = "snake_case")]
-pub enum Kind {
+#[serde(tag = "event", rename_all = "snake_case")]
+pub enum Event {
Sent(Sent),
Deleted(Deleted),
}
-impl Sequenced for Kind {
+impl Sequenced for Event {
fn instant(&self) -> Instant {
match self {
Self::Sent(sent) => sent.instant(),
@@ -44,7 +32,7 @@ impl Sequenced for Sent {
}
}
-impl From<Sent> for Kind {
+impl From<Sent> for Event {
fn from(event: Sent) -> Self {
Self::Sent(event)
}
@@ -64,7 +52,7 @@ impl Sequenced for Deleted {
}
}
-impl From<Deleted> for Kind {
+impl From<Deleted> for Event {
fn from(event: Deleted) -> Self {
Self::Deleted(event)
}
diff --git a/src/message/history.rs b/src/message/history.rs
index 3c3f77a..b5886af 100644
--- a/src/message/history.rs
+++ b/src/message/history.rs
@@ -35,22 +35,20 @@ impl History {
// Events interface
impl History {
fn sent(&self) -> Event {
- Event {
- kind: Sent {
- message: self.message.clone(),
- }
- .into(),
+ Sent {
+ message: self.message.clone(),
}
+ .into()
}
fn deleted(&self) -> Option<Event> {
- self.deleted.map(|instant| Event {
- kind: Deleted {
+ self.deleted.map(|instant| {
+ Deleted {
instant,
channel: self.message.channel.clone(),
id: self.message.id.clone(),
}
- .into(),
+ .into()
})
}
diff --git a/src/message/snapshot.rs b/src/message/snapshot.rs
index a06fbc4..a8cf734 100644
--- a/src/message/snapshot.rs
+++ b/src/message/snapshot.rs
@@ -1,12 +1,12 @@
use super::{
- event::{Event, Kind, Sent},
+ event::{Event, Sent},
Id,
};
use crate::{channel::Channel, event::Instant, login::Login};
#[derive(Clone, Debug, Eq, PartialEq, serde::Serialize)]
pub struct Message {
- #[serde(skip)]
+ #[serde(flatten)]
pub sent: Instant,
pub channel: Channel,
pub sender: Login,
@@ -16,9 +16,9 @@ pub struct Message {
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.id => None,
+ match (state, event) {
+ (None, Event::Sent(event)) => Some(event.into()),
+ (Some(message), Event::Deleted(event)) if message.id == event.id => None,
(state, event) => panic!("invalid message event {event:#?} for state {state:#?}"),
}
}