feat: add durable matchmaking metadata schema

This commit is contained in:
Josh Creek
2026-08-31 20:35:34 +01:00
parent 637b522486
commit 7c4b64b50a
3 changed files with 38 additions and 3 deletions
+28
View File
@@ -19,6 +19,15 @@ CREATE TABLE sessions (
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
CREATE TABLE idempotency_keys (
scope TEXT NOT NULL,
idempotency_key TEXT NOT NULL CHECK (char_length(idempotency_key) BETWEEN 16 AND 128),
payload_digest BYTEA NOT NULL,
result JSONB NOT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
PRIMARY KEY (scope, idempotency_key)
);
CREATE TABLE queue_tickets (
ticket_id TEXT PRIMARY KEY,
player_id TEXT NOT NULL REFERENCES identities(player_id),
@@ -95,6 +104,25 @@ CREATE TABLE ratings (
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
CREATE TABLE seasons (
season_id TEXT PRIMARY KEY,
playlist TEXT NOT NULL CHECK (playlist = 'ranked'),
starts_at TIMESTAMPTZ NOT NULL,
ends_at TIMESTAMPTZ NOT NULL CHECK (ends_at > starts_at),
rolled_over_at TIMESTAMPTZ
);
CREATE TABLE penalties (
penalty_id TEXT PRIMARY KEY,
player_id TEXT NOT NULL REFERENCES identities(player_id),
match_id TEXT REFERENCES matches(match_id),
playlist TEXT NOT NULL CHECK (playlist IN ('casual', 'ranked')),
kind TEXT NOT NULL,
starts_at TIMESTAMPTZ NOT NULL,
ends_at TIMESTAMPTZ NOT NULL CHECK (ends_at > starts_at),
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
CREATE TABLE result_receipts (
result_id TEXT PRIMARY KEY,
match_id TEXT NOT NULL UNIQUE REFERENCES matches(match_id),