Spaces:
Running
Running
-- Creates tables for Trivia. | |
BEGIN TRANSACTION; | |
-- Question/Answer storage | |
-- questions to be used in officials | |
CREATE TABLE trivia_questions ( | |
question_id INTEGER NOT NULL PRIMARY KEY, | |
question TEXT NOT NULL, | |
category TEXT NOT NULL, | |
-- unix timestamp in milliseconds | |
added_at INTEGER NOT NULL, | |
userid TEXT NOT NULL, | |
is_submission TINYINT(1) NOT NULL, | |
UNIQUE(question, category) | |
); | |
CREATE TABLE trivia_answers ( | |
question_id INTEGER NOT NULL, | |
answer TEXT NOT NULL, | |
PRIMARY KEY (question_id, answer), | |
FOREIGN KEY (question_id) REFERENCES trivia_questions(question_id) ON DELETE CASCADE | |
); | |
CREATE INDEX questions_by_category ON trivia_questions(category, is_submission); | |
CREATE INDEX questions_by_category_with_time ON trivia_questions(category, added_at, is_submission); | |
CREATE INDEX answers_by_question ON trivia_answers(question_id); | |
-- leaderboard for Trivia games | |
-- the existing Trivia code isn't well documented: | |
-- triviaData.altLeaderboard is the all-time leaderboard | |
-- triviaData.leaderboard is the non-all-time leaderboard (I think????) | |
-- this might be wrong β see #bot-and-script-and-website | |
-- TriviaScores = [score, total_points, total_correct_answers] | |
CREATE TABLE trivia_leaderboard ( | |
userid TEXT NOT NULL, | |
score INTEGER NOT NULL, | |
total_points INTEGER NOT NULL, | |
total_correct_answers INTEGER NOT NULL, | |
-- indicates if this row is all time | |
is_all_time TINYINT(1) NOT NULL, | |
PRIMARY KEY (userid, is_all_time) | |
); | |
CREATE INDEX leaderboard_index ON trivia_leaderboard(userid, is_all_time); | |
-- Trivia game history | |
CREATE TABLE trivia_game_history ( | |
game_id INTEGER NOT NULL PRIMARY KEY, | |
mode TEXT NOT NULL, | |
-- either a length name ('long' etc) or a score cap | |
length TEXT NOT NULL, | |
category TEXT NOT NULL, | |
-- unix timestamp in milliseconds | |
time INTEGER NOT NULL, | |
creator TEXT, | |
gives_points TINYINT(1) | |
); | |
CREATE TABLE trivia_game_scores ( | |
game_id INTEGER NOT NULL, | |
userid TEXT NOT NULL, | |
score INTEGER NOT NULL, | |
PRIMARY KEY (game_id, userid), | |
FOREIGN KEY (game_id) REFERENCES trivia_game_history(game_id) ON DELETE CASCADE | |
); | |
CREATE INDEX game_history_index ON trivia_game_history(time); | |
CREATE INDEX score_history ON trivia_game_scores(game_id); | |
-- Settings | |
-- this is really just for moveEventQuestions | |
CREATE TABLE trivia_settings ( | |
key TEXT NOT NULL PRIMARY KEY, | |
value TINYINT(1) NOT NULL | |
); | |
-- update database version | |
UPDATE db_info SET value = '2' WHERE key = 'version'; | |
COMMIT; | |