81 lines
2.8 KiB
SQL
81 lines
2.8 KiB
SQL
-- migrations/001_initial_schema.up.sql
|
|
|
|
CREATE TABLE rooms (
|
|
id TEXT PRIMARY KEY,
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
creator_name TEXT NOT NULL,
|
|
team_turn TEXT NOT NULL DEFAULT '',
|
|
this_turn_limit INTEGER NOT NULL DEFAULT 0,
|
|
opened_this_turn INTEGER NOT NULL DEFAULT 0,
|
|
blue_counter INTEGER NOT NULL DEFAULT 0,
|
|
red_counter INTEGER NOT NULL DEFAULT 0,
|
|
red_turn BOOLEAN NOT NULL DEFAULT FALSE,
|
|
mime_done BOOLEAN NOT NULL DEFAULT FALSE,
|
|
is_running BOOLEAN NOT NULL DEFAULT FALSE,
|
|
is_over BOOLEAN NOT NULL DEFAULT FALSE,
|
|
team_won TEXT NOT NULL DEFAULT '',
|
|
room_link TEXT NOT NULL DEFAULT ''
|
|
);
|
|
|
|
CREATE TABLE players (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
room_id TEXT, -- nullable
|
|
username TEXT NOT NULL UNIQUE,
|
|
team TEXT NOT NULL DEFAULT '', -- 'red' or 'blue'
|
|
role TEXT NOT NULL DEFAULT '', -- 'guesser' or 'mime'
|
|
is_bot BOOLEAN NOT NULL DEFAULT FALSE,
|
|
FOREIGN KEY (room_id) REFERENCES rooms(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE word_cards (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
room_id TEXT NOT NULL,
|
|
word TEXT NOT NULL,
|
|
color TEXT NOT NULL DEFAULT '',
|
|
revealed BOOLEAN NOT NULL DEFAULT FALSE,
|
|
mime_view BOOLEAN NOT NULL DEFAULT FALSE,
|
|
FOREIGN KEY (room_id) REFERENCES rooms(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE card_marks (
|
|
card_id INTEGER NOT NULL,
|
|
username TEXT NOT NULL,
|
|
active BOOLEAN NOT NULL DEFAULT TRUE,
|
|
FOREIGN KEY (card_id) REFERENCES word_cards(id) ON DELETE CASCADE,
|
|
FOREIGN KEY (username) REFERENCES players(username) ON DELETE CASCADE,
|
|
PRIMARY KEY (card_id, username)
|
|
);
|
|
|
|
CREATE TABLE actions (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
room_id TEXT NOT NULL,
|
|
actor TEXT NOT NULL,
|
|
actor_color TEXT NOT NULL DEFAULT '',
|
|
action_type TEXT NOT NULL,
|
|
word TEXT NOT NULL DEFAULT '',
|
|
word_color TEXT NOT NULL DEFAULT '',
|
|
number_associated TEXT NOT NULL DEFAULT '', -- for clues
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (room_id) REFERENCES rooms(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE settings (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
room_id TEXT NOT NULL,
|
|
language TEXT NOT NULL DEFAULT 'en',
|
|
room_pass TEXT NOT NULL DEFAULT '',
|
|
turn_time INTEGER NOT NULL DEFAULT 60, -- seconds
|
|
turn_seconds_left INTEGER NOT NULL DEFAULT 0,
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (room_id) REFERENCES rooms(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE sessions(
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
lifetime INTEGER NOT NULL DEFAULT 3600,
|
|
token_key TEXT NOT NULL DEFAULT '' UNIQUE, -- encoded value
|
|
username TEXT NOT NULL,
|
|
FOREIGN KEY (username) REFERENCES players(username) ON DELETE CASCADE
|
|
);
|