diff options
| author | Ellie Huxtable <e@elm.sh> | 2021-03-21 20:04:39 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-03-21 20:04:39 +0000 |
| commit | c9579cb9ca2a6a165d10f128e0af1dfd372e0c03 (patch) | |
| tree | 1d4feecb422aae3cde1cc7cad54ccc73b2dae410 /src/remote/models.rs | |
| parent | Add TUI, resolve #19, #17, #16 (#21) (diff) | |
| download | atuin-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.rs | 56 |
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, +} |
