aboutsummaryrefslogtreecommitdiffstats
path: root/migrations
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 /migrations
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 'migrations')
-rw-r--r--migrations/.gitkeep0
-rw-r--r--migrations/00000000000000_diesel_initial_setup/down.sql6
-rw-r--r--migrations/00000000000000_diesel_initial_setup/up.sql36
-rw-r--r--migrations/2021-03-20-151809_create_history/down.sql2
-rw-r--r--migrations/2021-03-20-151809_create_history/up.sql11
-rw-r--r--migrations/2021-03-20-171007_create_users/down.sql2
-rw-r--r--migrations/2021-03-20-171007_create_users/up.sql6
-rw-r--r--migrations/2021-03-21-181750_create_sessions/down.sql2
-rw-r--r--migrations/2021-03-21-181750_create_sessions/up.sql6
9 files changed, 71 insertions, 0 deletions
diff --git a/migrations/.gitkeep b/migrations/.gitkeep
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/migrations/.gitkeep
diff --git a/migrations/00000000000000_diesel_initial_setup/down.sql b/migrations/00000000000000_diesel_initial_setup/down.sql
new file mode 100644
index 00000000..a9f52609
--- /dev/null
+++ b/migrations/00000000000000_diesel_initial_setup/down.sql
@@ -0,0 +1,6 @@
+-- This file was automatically created by Diesel to setup helper functions
+-- and other internal bookkeeping. This file is safe to edit, any future
+-- changes will be added to existing projects as new migrations.
+
+DROP FUNCTION IF EXISTS diesel_manage_updated_at(_tbl regclass);
+DROP FUNCTION IF EXISTS diesel_set_updated_at();
diff --git a/migrations/00000000000000_diesel_initial_setup/up.sql b/migrations/00000000000000_diesel_initial_setup/up.sql
new file mode 100644
index 00000000..d68895b1
--- /dev/null
+++ b/migrations/00000000000000_diesel_initial_setup/up.sql
@@ -0,0 +1,36 @@
+-- This file was automatically created by Diesel to setup helper functions
+-- and other internal bookkeeping. This file is safe to edit, any future
+-- changes will be added to existing projects as new migrations.
+
+
+
+
+-- Sets up a trigger for the given table to automatically set a column called
+-- `updated_at` whenever the row is modified (unless `updated_at` was included
+-- in the modified columns)
+--
+-- # Example
+--
+-- ```sql
+-- CREATE TABLE users (id SERIAL PRIMARY KEY, updated_at TIMESTAMP NOT NULL DEFAULT NOW());
+--
+-- SELECT diesel_manage_updated_at('users');
+-- ```
+CREATE OR REPLACE FUNCTION diesel_manage_updated_at(_tbl regclass) RETURNS VOID AS $$
+BEGIN
+ EXECUTE format('CREATE TRIGGER set_updated_at BEFORE UPDATE ON %s
+ FOR EACH ROW EXECUTE PROCEDURE diesel_set_updated_at()', _tbl);
+END;
+$$ LANGUAGE plpgsql;
+
+CREATE OR REPLACE FUNCTION diesel_set_updated_at() RETURNS trigger AS $$
+BEGIN
+ IF (
+ NEW IS DISTINCT FROM OLD AND
+ NEW.updated_at IS NOT DISTINCT FROM OLD.updated_at
+ ) THEN
+ NEW.updated_at := current_timestamp;
+ END IF;
+ RETURN NEW;
+END;
+$$ LANGUAGE plpgsql;
diff --git a/migrations/2021-03-20-151809_create_history/down.sql b/migrations/2021-03-20-151809_create_history/down.sql
new file mode 100644
index 00000000..ea02ce42
--- /dev/null
+++ b/migrations/2021-03-20-151809_create_history/down.sql
@@ -0,0 +1,2 @@
+-- This file should undo anything in `up.sql`
+drop table history;
diff --git a/migrations/2021-03-20-151809_create_history/up.sql b/migrations/2021-03-20-151809_create_history/up.sql
new file mode 100644
index 00000000..7cb19fc7
--- /dev/null
+++ b/migrations/2021-03-20-151809_create_history/up.sql
@@ -0,0 +1,11 @@
+-- Your SQL goes here
+-- lower case SQL please, this isn't a shouting match
+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
+ 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!
+);
diff --git a/migrations/2021-03-20-171007_create_users/down.sql b/migrations/2021-03-20-171007_create_users/down.sql
new file mode 100644
index 00000000..5795f6b3
--- /dev/null
+++ b/migrations/2021-03-20-171007_create_users/down.sql
@@ -0,0 +1,2 @@
+-- This file should undo anything in `up.sql`
+drop table users;
diff --git a/migrations/2021-03-20-171007_create_users/up.sql b/migrations/2021-03-20-171007_create_users/up.sql
new file mode 100644
index 00000000..0eecea7c
--- /dev/null
+++ b/migrations/2021-03-20-171007_create_users/up.sql
@@ -0,0 +1,6 @@
+-- Your SQL goes here
+create table users (
+ id bigserial primary key, -- also store our own ID
+ email varchar(128) not null unique, -- being able to contact users is useful
+ password varchar(128) not null unique
+);
diff --git a/migrations/2021-03-21-181750_create_sessions/down.sql b/migrations/2021-03-21-181750_create_sessions/down.sql
new file mode 100644
index 00000000..53a779c9
--- /dev/null
+++ b/migrations/2021-03-21-181750_create_sessions/down.sql
@@ -0,0 +1,2 @@
+-- This file should undo anything in `up.sql`
+drop table sessions;
diff --git a/migrations/2021-03-21-181750_create_sessions/up.sql b/migrations/2021-03-21-181750_create_sessions/up.sql
new file mode 100644
index 00000000..b81705e2
--- /dev/null
+++ b/migrations/2021-03-21-181750_create_sessions/up.sql
@@ -0,0 +1,6 @@
+-- Your SQL goes here
+create table sessions (
+ id bigserial primary key,
+ user_id bigserial,
+ token varchar(128) unique not null
+);