diff options
Diffstat (limited to 'src/database')
-rw-r--r-- | src/database/types.rs | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/src/database/types.rs b/src/database/types.rs new file mode 100644 index 0000000..4d2c220 --- /dev/null +++ b/src/database/types.rs @@ -0,0 +1,100 @@ +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<usize>, // Message ID + deleted: bool, +} +impl Message { + pub fn new(msg: String, sender: User, id: usize, reply_to: Option<usize>) -> 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<usize>, 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<i64> { + 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<crate::database::Database>) -> Info { + Info{ + name: String::from("Testing"), + users: db.get_user_count(), + } + } +}
\ No newline at end of file |