aboutsummaryrefslogtreecommitdiffstats
path: root/src/remote/models.rs
diff options
context:
space:
mode:
authorEllie Huxtable <e@elm.sh>2021-03-21 20:04:39 +0000
committerGitHub <noreply@github.com>2021-03-21 20:04:39 +0000
commitc9579cb9ca2a6a165d10f128e0af1dfd372e0c03 (patch)
tree1d4feecb422aae3cde1cc7cad54ccc73b2dae410 /src/remote/models.rs
parentAdd TUI, resolve #19, #17, #16 (#21) (diff)
downloadatuin-c9579cb9ca2a6a165d10f128e0af1dfd372e0c03.zip
Implement server (#23)
* Add initial database and server setup * Set up all routes, auth, etc * Implement sessions, password auth, hashing with argon2, and history storage
Diffstat (limited to 'src/remote/models.rs')
-rw-r--r--src/remote/models.rs56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/remote/models.rs b/src/remote/models.rs
new file mode 100644
index 00000000..058b2f0b
--- /dev/null
+++ b/src/remote/models.rs
@@ -0,0 +1,56 @@
+use chrono::naive::NaiveDateTime;
+
+use crate::schema::{history, sessions, users};
+
+#[derive(Identifiable, Queryable, Associations)]
+#[table_name = "history"]
+#[belongs_to(User)]
+pub struct History {
+ pub id: i64,
+ pub client_id: String,
+ pub user_id: i64,
+ pub mac: String,
+ pub timestamp: NaiveDateTime,
+
+ pub data: String,
+}
+
+#[derive(Identifiable, Queryable, Associations)]
+pub struct User {
+ pub id: i64,
+ pub email: String,
+ pub password: String,
+}
+
+#[derive(Queryable, Identifiable, Associations)]
+#[belongs_to(User)]
+pub struct Session {
+ pub id: i64,
+ pub user_id: i64,
+ pub token: String,
+}
+
+#[derive(Insertable)]
+#[table_name = "history"]
+pub struct NewHistory<'a> {
+ pub client_id: &'a str,
+ pub user_id: i64,
+ pub mac: &'a str,
+ pub timestamp: NaiveDateTime,
+
+ pub data: &'a str,
+}
+
+#[derive(Insertable)]
+#[table_name = "users"]
+pub struct NewUser<'a> {
+ pub email: &'a str,
+ pub password: &'a str,
+}
+
+#[derive(Insertable)]
+#[table_name = "sessions"]
+pub struct NewSession<'a> {
+ pub user_id: i64,
+ pub token: &'a str,
+}