diff options
| author | Owen Jacobson <owen@grimoire.ca> | 2024-10-08 22:43:22 -0400 |
|---|---|---|
| committer | Owen Jacobson <owen@grimoire.ca> | 2024-10-09 11:45:31 -0400 |
| commit | 9e171096a72d3e63626df7b09970476aba28eb06 (patch) | |
| tree | 7272c065fdb85148dc5c90d937fc7d13fc716ccf /src/message/snapshot.rs | |
| parent | 653e2de752a97e377fc9963ba60d9408e7089528 (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/snapshot.rs')
| -rw-r--r-- | src/message/snapshot.rs | 10 |
1 files changed, 5 insertions, 5 deletions
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:#?}"), } } |
