improvements
This commit is contained in:
40
migrations/0001_schema.sql
Normal file
40
migrations/0001_schema.sql
Normal file
@@ -0,0 +1,40 @@
|
||||
-- DROP OWNED BY CURRENT_USER CASCADE;
|
||||
CREATE TYPE STAT AS ENUM ('waiting', 'p1turn', 'p2turn');
|
||||
|
||||
CREATE TABLE IF NOT EXISTS players (
|
||||
id CHAR(16) PRIMARY KEY,
|
||||
board CHAR(10) [10],
|
||||
room_code CHAR(4) NOT NULL,
|
||||
abandoned BOOLEAN DEFAULT FALSE NOT NULL,
|
||||
time TIMESTAMP DEFAULT NOW() NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS rooms (
|
||||
code CHAR(4) PRIMARY KEY,
|
||||
player1_id CHAR(16),
|
||||
player2_id CHAR(16),
|
||||
stat STAT DEFAULT 'waiting' NOT NULL,
|
||||
CHECK (
|
||||
(
|
||||
player1_id IS DISTINCT
|
||||
FROM player2_id
|
||||
)
|
||||
OR (
|
||||
player1_id IS NULL
|
||||
AND player2_id IS NULL
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
ALTER TABLE players
|
||||
ADD CONSTRAINT fk_room_code FOREIGN KEY (room_code) REFERENCES rooms (code) ON DELETE
|
||||
SET NULL;
|
||||
|
||||
ALTER TABLE rooms
|
||||
ADD CONSTRAINT fk_player1 FOREIGN KEY (player1_id) REFERENCES players (id) ON DELETE
|
||||
SET NULL ON UPDATE CASCADE,
|
||||
ADD CONSTRAINT fk_player2 FOREIGN KEY (player2_id) REFERENCES players (id) ON DELETE
|
||||
SET NULL ON UPDATE CASCADE;
|
||||
|
||||
CREATE INDEX idx_player_room_code ON players (room_code);
|
||||
CREATE INDEX idx_room_status ON players (abandoned);
|
Reference in New Issue
Block a user