1
Fork 0
holycow/holycow_backend/migrations/2024-11-28-084240_create players/up.sql

46 lines
1.1 KiB
SQL

CREATE TYPE wenglin_t AS
(
rating float8,
uncertainty float8
);
CREATE TABLE players
(
id INTEGER GENERATED ALWAYS AS IDENTITY,
wenglin wenglin_t NOT NULL DEFAULT ROW (25.0, 25.0 / 3),
telegram_id BIGINT,
CONSTRAINT telegram_ids_are_unique UNIQUE (telegram_id),
PRIMARY KEY (id)
);
CREATE TYPE outcome_t AS ENUM (
'AWins',
'BWins',
'Tie'
);
CREATE TABLE matches
(
id INTEGER GENERATED ALWAYS AS IDENTITY,
instant timestamptz NOT NULL DEFAULT NOW(),
name VARCHAR,
player_a_id BIGINT NOT NULL,
player_a_wenglin_before wenglin_t NOT NULL,
player_a_wenglin_after wenglin_t NOT NULL,
player_b_id BIGINT NOT NULL,
player_b_wenglin_before wenglin_t NOT NULL,
player_b_wenglin_after wenglin_t NOT NULL,
outcome outcome_t NOT NULL,
CONSTRAINT match_unique_name UNIQUE (name),
CONSTRAINT not_same_player CHECK (player_a_id != player_b_id),
FOREIGN KEY (player_a_id) REFERENCES players (id),
FOREIGN KEY (player_b_id) REFERENCES players (id),
PRIMARY KEY (id)
);