summaryrefslogtreecommitdiff
path: root/src/message/event.rs
diff options
context:
space:
mode:
authorOwen Jacobson <owen@grimoire.ca>2024-10-08 22:43:22 -0400
committerOwen Jacobson <owen@grimoire.ca>2024-10-09 11:45:31 -0400
commit9e171096a72d3e63626df7b09970476aba28eb06 (patch)
tree7272c065fdb85148dc5c90d937fc7d13fc716ccf /src/message/event.rs
parent653e2de752a97e377fc9963ba60d9408e7089528 (diff)
Use a two-tier hierarchy for events.
This will make it much easier to slot in new event types (login events!).
Diffstat (limited to 'src/message/event.rs')
-rw-r--r--src/message/event.rs22
1 files changed, 5 insertions, 17 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)
}