From 5751463942cc91f1f1ffaf6e2ac633d7a0085f25 Mon Sep 17 00:00:00 2001 From: Ellie Huxtable Date: Tue, 13 Apr 2021 19:14:07 +0100 Subject: Add history sync, resolves #13 (#31) * Add encryption * Add login and register command * Add count endpoint * Write initial sync push * Add single sync command Confirmed working for one client only * Automatically sync on a configurable frequency * Add key command, key arg to login * Only load session if it exists * Use sync and history timestamps for download * Bind other key code Seems like some systems have this code for up arrow? I'm not sure why, and it's not an easy one to google. * Simplify upload * Try and fix download sync loop * Change sync order to avoid uploading what we just downloaded * Multiline import fix * Fix time parsing * Fix importing history with no time * Add hostname to sync * Use hostname to filter sync * Fixes * Add binding * Stuff from yesterday * Set cursor modes * Make clippy happy * Bump version --- migrations/2021-03-20-151809_create_history/up.sql | 6 ++++-- migrations/2021-03-20-171007_create_users/up.sql | 5 +++++ 2 files changed, 9 insertions(+), 2 deletions(-) (limited to 'migrations') diff --git a/migrations/2021-03-20-151809_create_history/up.sql b/migrations/2021-03-20-151809_create_history/up.sql index 7cb19fc7..4192b04d 100644 --- a/migrations/2021-03-20-151809_create_history/up.sql +++ b/migrations/2021-03-20-151809_create_history/up.sql @@ -4,8 +4,10 @@ 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 - mac varchar(128) not null, -- store a hashed mac address, to identify machines - more likely to be unique than hostname + 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! + 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/migrations/2021-03-20-171007_create_users/up.sql b/migrations/2021-03-20-171007_create_users/up.sql index 0eecea7c..46c6a372 100644 --- a/migrations/2021-03-20-171007_create_users/up.sql +++ b/migrations/2021-03-20-171007_create_users/up.sql @@ -1,6 +1,11 @@ -- Your SQL goes here 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)); -- cgit v1.3.1