diff options
author | Ellie Huxtable <e@elm.sh> | 2021-04-25 18:21:52 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-25 17:21:52 +0000 |
commit | 156893d774b4da5b541fdbb08428f9ec392949a0 (patch) | |
tree | 9185d94384aa62eb6eb099ddc4ca9408df6f90d1 /atuin-server | |
parent | 4210e8de5a29eb389b753adf8df47d2c449a2eeb (diff) |
Update docs, unify on SQLx, bugfixes (#40)
* Begin moving to sqlx for local too
* Stupid scanners should just have a nice cup of tea
Random internet shit searching for /.env or whatever
* Remove diesel and rusqlite fully
Diffstat (limited to 'atuin-server')
-rw-r--r-- | atuin-server/migrations/20210425153745_create_history.sql | 11 | ||||
-rw-r--r-- | atuin-server/migrations/20210425153757_create_users.sql | 10 | ||||
-rw-r--r-- | atuin-server/migrations/20210425153800_create_sessions.sql | 6 | ||||
-rw-r--r-- | atuin-server/src/database.rs | 2 | ||||
-rw-r--r-- | atuin-server/src/router.rs | 7 | ||||
-rw-r--r-- | atuin-server/src/settings.rs | 5 |
6 files changed, 35 insertions, 6 deletions
diff --git a/atuin-server/migrations/20210425153745_create_history.sql b/atuin-server/migrations/20210425153745_create_history.sql new file mode 100644 index 00000000..2c2d17b0 --- /dev/null +++ b/atuin-server/migrations/20210425153745_create_history.sql @@ -0,0 +1,11 @@ +create table history ( + id bigserial primary key, + client_id text not null unique, -- the client-generated ID + user_id bigserial not null, -- allow multiple users + hostname text not null, -- a unique identifier from the client (can be hashed, random, whatever) + timestamp timestamp not null, -- one of the few non-encrypted metadatas + + data varchar(8192) not null, -- store the actual history data, encrypted. I don't wanna know! + + created_at timestamp not null default current_timestamp +); diff --git a/atuin-server/migrations/20210425153757_create_users.sql b/atuin-server/migrations/20210425153757_create_users.sql new file mode 100644 index 00000000..a25dcced --- /dev/null +++ b/atuin-server/migrations/20210425153757_create_users.sql @@ -0,0 +1,10 @@ +create table users ( + id bigserial primary key, -- also store our own ID + username varchar(32) not null unique, -- being able to contact users is useful + email varchar(128) not null unique, -- being able to contact users is useful + password varchar(128) not null unique +); + +-- the prior index is case sensitive :( +CREATE UNIQUE INDEX email_unique_idx on users (LOWER(email)); +CREATE UNIQUE INDEX username_unique_idx on users (LOWER(username)); diff --git a/atuin-server/migrations/20210425153800_create_sessions.sql b/atuin-server/migrations/20210425153800_create_sessions.sql new file mode 100644 index 00000000..c2fb6559 --- /dev/null +++ b/atuin-server/migrations/20210425153800_create_sessions.sql @@ -0,0 +1,6 @@ +-- Add migration script here +create table sessions ( + id bigserial primary key, + user_id bigserial, + token varchar(128) unique not null +); diff --git a/atuin-server/src/database.rs b/atuin-server/src/database.rs index 5945baaf..4a3828d0 100644 --- a/atuin-server/src/database.rs +++ b/atuin-server/src/database.rs @@ -40,6 +40,8 @@ impl Postgres { .connect(uri) .await?; + sqlx::migrate!("./migrations").run(&pool).await?; + Ok(Self { pool }) } } diff --git a/atuin-server/src/router.rs b/atuin-server/src/router.rs index d106068d..ffab74e5 100644 --- a/atuin-server/src/router.rs +++ b/atuin-server/src/router.rs @@ -1,7 +1,7 @@ use std::convert::Infallible; use eyre::Result; -use warp::Filter; +use warp::{hyper::StatusCode, Filter}; use atuin_common::api::SyncHistoryRequest; @@ -56,7 +56,7 @@ fn with_user( pub async fn router( settings: &Settings, -) -> Result<impl Filter<Extract = impl warp::Reply, Error = warp::Rejection> + Clone> { +) -> Result<impl Filter<Extract = impl warp::Reply, Error = Infallible> + Clone> { let postgres = Postgres::new(settings.db_uri.as_str()).await?; let index = warp::get().and(warp::path::end()).map(handlers::index); @@ -115,7 +115,8 @@ pub async fn router( .or(add_history) .or(user) .or(register) - .or(login), + .or(login) + .or(warp::any().map(|| warp::reply::with_status("☕", StatusCode::IM_A_TEAPOT))), ) .with(warp::filters::log::log("atuin::api")); diff --git a/atuin-server/src/settings.rs b/atuin-server/src/settings.rs index e51b6b2a..7364656e 100644 --- a/atuin-server/src/settings.rs +++ b/atuin-server/src/settings.rs @@ -3,7 +3,6 @@ use std::io::prelude::*; use std::path::PathBuf; use config::{Config, Environment, File as ConfigFile}; -use directories::ProjectDirs; use eyre::{eyre, Result}; pub const HISTORY_PAGE_SIZE: i64 = 100; @@ -18,8 +17,8 @@ pub struct Settings { impl Settings { pub fn new() -> Result<Self> { - let config_dir = ProjectDirs::from("com", "elliehuxtable", "atuin").unwrap(); - let config_dir = config_dir.config_dir(); + let config_dir = atuin_common::utils::config_dir(); + let config_dir = config_dir.as_path(); create_dir_all(config_dir)?; |