summaryrefslogtreecommitdiffstats
path: root/atuin-server
diff options
context:
space:
mode:
authorEllie Huxtable <e@elm.sh>2021-04-25 18:21:52 +0100
committerGitHub <noreply@github.com>2021-04-25 17:21:52 +0000
commit156893d774b4da5b541fdbb08428f9ec392949a0 (patch)
tree9185d94384aa62eb6eb099ddc4ca9408df6f90d1 /atuin-server
parent4210e8de5a29eb389b753adf8df47d2c449a2eeb (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.sql11
-rw-r--r--atuin-server/migrations/20210425153757_create_users.sql10
-rw-r--r--atuin-server/migrations/20210425153800_create_sessions.sql6
-rw-r--r--atuin-server/src/database.rs2
-rw-r--r--atuin-server/src/router.rs7
-rw-r--r--atuin-server/src/settings.rs5
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)?;