use serde::Serialize; use std::time::SystemTime; #[derive(Serialize, Clone, Debug)] pub struct Date { date: u64, } impl Date { pub fn now() -> Date { Date{ date: SystemTime::now().duration_since(SystemTime::UNIX_EPOCH).unwrap().as_secs() } } pub fn new(s: i64) -> Date { Date { date: s as u64, } } } #[derive(Serialize, Clone, Debug)] pub struct User { username: String, id: usize } impl User { pub fn new(name: String, id: usize) -> User { User{ username: name, id: id } } } #[derive(Serialize, Clone, Debug)] pub struct Message { date: Date, message: String, sender: User, id: usize, reply_to: Option, // Message ID deleted: bool, } impl Message { pub fn new(msg: String, sender: User, id: usize, reply_to: Option) -> Message { Message { date: Date::now(), sender: sender, message: msg, id: id, reply_to: reply_to, deleted: false, } } pub fn construct(msg: String, sender: User, id: usize, reply_to: Option, date: Date, deleted: bool) -> Message { Message { date: date, sender: sender, message: msg, id: id, reply_to: reply_to, deleted: deleted, } } pub fn id(&self) -> usize { self.id } pub fn date_as_i64(&self) -> i64 { self.date.date as i64 } pub fn user_id(&self) -> i64 { self.sender.id as i64 } pub fn message(&self) -> String { self.message.clone() } pub fn reply_to(&self) -> Option { match self.reply_to { Some(n) => Some(n as i64), None => None } } } #[derive(Serialize)] pub struct Info { name: String, users: usize, } impl Info { pub fn get(db: std::sync::MutexGuard) -> Info { Info{ name: String::from("Testing"), users: db.get_user_count(), } } }