use chrono::{NaiveDateTime, Utc}; use serde::{Deserialize, Serialize}; use sled::IVec; #[derive(Debug, Clone, Deserialize, Serialize)] pub struct Event { /// Event name pub event_name: String, /// Event long description pub event_desc: String, /// Event location pub event_loc: String, /// Event organizer pub organizer: String, /// Event datetime pub event_time: NaiveDateTime, /// Event discord message id pub message_id: String, /// Event message thumbnail link pub thumbnail_link: String, } impl Default for Event { fn default() -> Self { Self { message_id: String::default(), event_time: Utc::now().naive_utc(), event_name: String::default(), organizer: String::default(), event_desc: String::default(), event_loc: String::default(), thumbnail_link: String::default(), } } } impl Into for &Event { fn into(self) -> IVec { IVec::from(serde_json::to_string(self).unwrap().as_str()) } } impl From<&IVec> for Event { fn from(v: &IVec) -> Self { let s = String::from_utf8(v.to_vec()).unwrap(); let e: Event = serde_json::from_str(s.as_str()).unwrap(); e } } impl From for Event { fn from(v: IVec) -> Self { Self::from(&v) } }