diff options
Diffstat (limited to 'src/boot/mod.rs')
| -rw-r--r-- | src/boot/mod.rs | 64 |
1 files changed, 2 insertions, 62 deletions
diff --git a/src/boot/mod.rs b/src/boot/mod.rs index bd0da0a..ed4764a 100644 --- a/src/boot/mod.rs +++ b/src/boot/mod.rs @@ -1,74 +1,14 @@ pub mod app; mod routes; -use crate::{ - channel, - event::{Instant, Sequence}, - login::Login, - message, -}; +use crate::{channel::Channel, event::Sequence, login::Login, message::Message}; pub use self::routes::router; #[derive(serde::Serialize)] pub struct Snapshot { pub resume_point: Sequence, + pub logins: Vec<Login>, pub channels: Vec<Channel>, -} - -#[derive(serde::Serialize)] -pub struct Channel { - pub id: channel::Id, - pub name: String, pub messages: Vec<Message>, } - -impl Channel { - fn new( - channel: channel::Channel, - messages: impl IntoIterator<Item = message::Message>, - ) -> Self { - // The declarations are like this to guarantee that we aren't omitting any important fields from the corresponding types. - let channel::Channel { id, name } = channel; - - Self { - id, - name, - messages: messages.into_iter().map(Message::from).collect(), - } - } -} - -#[derive(serde::Serialize)] -pub struct Message { - #[serde(flatten)] - pub sent: Instant, - pub sender: Login, - // Named this way for serialization reasons - #[allow(clippy::struct_field_names)] - pub message: Body, -} - -impl From<message::Message> for Message { - fn from(message: message::Message) -> Self { - let message::Message { - sent, - channel: _, - sender, - id, - body, - } = message; - - Self { - sent, - sender, - message: Body { id, body }, - } - } -} - -#[derive(serde::Serialize)] -pub struct Body { - id: message::Id, - body: String, -} |
