aboutsummaryrefslogtreecommitdiff
path: root/src/database
diff options
context:
space:
mode:
authorcurly <curlybryce@protonmail.com>2023-02-07 13:44:31 -0700
committercurly <curlybryce@protonmail.com>2023-02-07 13:44:31 -0700
commit9d8ea69fee5b26d804529d877d54c01229ba2322 (patch)
tree4175a0bffc9eb97d6543737f4272a4a8da3a4393 /src/database
parent8d66325e8886768f125e07790d5d4311dbaf3f03 (diff)
downloadrocket_test-9d8ea69fee5b26d804529d877d54c01229ba2322.tar.gz
rocket_test-9d8ea69fee5b26d804529d877d54c01229ba2322.tar.bz2
rocket_test-9d8ea69fee5b26d804529d877d54c01229ba2322.zip
I hate sql
Diffstat (limited to 'src/database')
-rw-r--r--src/database/types.rs100
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