use crate::{channel::Channel, event::Sequence, message::Message, user::User}; use serde::Serialize; use std::time::Duration; pub mod app; mod routes; pub use self::routes::router; #[derive(serde::Serialize)] pub struct Snapshot { pub resume_point: Sequence, #[serde(serialize_with = "as_seconds")] pub heartbeat: Duration, pub users: Vec, pub channels: Vec, pub messages: Vec, } fn as_seconds(duration: &Duration, serializer: S) -> Result where S: serde::Serializer, { duration.as_secs().serialize(serializer) }