summaryrefslogtreecommitdiff
path: root/src/message/event.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/message/event.rs')
-rw-r--r--src/message/event.rs27
1 files changed, 24 insertions, 3 deletions
diff --git a/src/message/event.rs b/src/message/event.rs
index bcc2238..66db9b0 100644
--- a/src/message/event.rs
+++ b/src/message/event.rs
@@ -7,14 +7,12 @@ use crate::{
#[derive(Clone, Debug, Eq, PartialEq, serde::Serialize)]
pub struct Event {
#[serde(flatten)]
- pub instant: Instant,
- #[serde(flatten)]
pub kind: Kind,
}
impl Sequenced for Event {
fn instant(&self) -> Instant {
- self.instant
+ self.kind.instant()
}
}
@@ -25,12 +23,27 @@ pub enum Kind {
Deleted(Deleted),
}
+impl Sequenced for Kind {
+ fn instant(&self) -> Instant {
+ match self {
+ Self::Sent(sent) => sent.instant(),
+ Self::Deleted(deleted) => deleted.instant(),
+ }
+ }
+}
+
#[derive(Clone, Debug, Eq, PartialEq, serde::Serialize)]
pub struct Sent {
#[serde(flatten)]
pub message: Message,
}
+impl Sequenced for Sent {
+ fn instant(&self) -> Instant {
+ self.message.sent
+ }
+}
+
impl From<Sent> for Kind {
fn from(event: Sent) -> Self {
Self::Sent(event)
@@ -39,10 +52,18 @@ impl From<Sent> for Kind {
#[derive(Clone, Debug, Eq, PartialEq, serde::Serialize)]
pub struct Deleted {
+ #[serde(flatten)]
+ pub instant: Instant,
pub channel: Channel,
pub message: Id,
}
+impl Sequenced for Deleted {
+ fn instant(&self) -> Instant {
+ self.instant
+ }
+}
+
impl From<Deleted> for Kind {
fn from(event: Deleted) -> Self {
Self::Deleted(event)