v1.0: First production version

This first version allows login of pre-existing users, creation and update of truths
by admins, vote on the truths by users, their display as well as a simple graph
for the vote results.
Everything persisting in a SQLite database.
This commit is contained in:
trotFunky 2024-07-23 21:51:42 +01:00
commit 9911895b5b
22 changed files with 4790 additions and 0 deletions

35
db/00_create-tables.sql Normal file
View file

@ -0,0 +1,35 @@
CREATE TABLE IF NOT EXISTS Players (
id INTEGER PRIMARY KEY AUTOINCREMENT,
is_admin INTEGER NOT NULL DEFAULT 0,
name VARCHAR NOT NULL,
pwd_hash VARCHAR NOT NULL,
picture VARCHAR
);
CREATE TABLE IF NOT EXISTS Truths (
id INTEGER PRIMARY KEY AUTOINCREMENT,
week INTEGER NOT NULL CHECK (week > 0),
number INTEGER NOT NULL CHECK (number > 0),
author_id INTEGER NOT NULL,
rendered_text VARCHAR NOT NULL,
raw_text VARCHAR NOT NULL,
FOREIGN KEY (author_id) REFERENCES Players(id) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS Votes (
id INTEGER PRIMARY KEY AUTOINCREMENT,
truth_id INTEGER NOT NULL,
voter_id INTEGER NOT NULL,
voted_id INTEGER NOT NULL,
FOREIGN KEY (truth_id) REFERENCES Truths(id) ON DELETE CASCADE,
FOREIGN KEY (voter_id) REFERENCES Players(id) ON DELETE CASCADE,
FOREIGN KEY (voted_id) REFERENCES Players(id) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS AuthTokens (
id INTEGER PRIMARY KEY AUTOINCREMENT,
player_id INTEGER NOT NULL,
token VARCHAR NOT NULL,
max_timestamp INTEGER NOT NULL,
FOREIGN KEY (player_id) REFERENCES Players(id) ON DELETE CASCADE
);