import pg from "pg"; const client = new pg.Client({ host: process.env.PROVISION_HOST, port: parseInt(process.env.PROVISION_PORT ?? "5432"), user: process.env.PROVISION_USER, password: process.env.PROVISION_PASSWORD, database: process.env.PROVISION_DATABASE, }); await client.connect(); try { await client.query(` CREATE TABLE IF NOT EXISTS players ( id TEXT PRIMARY KEY, games_played INT NOT NULL DEFAULT 0, games_won INT NOT NULL DEFAULT 0, games_lost INT NOT NULL DEFAULT 0, best_attempts INT, current_streak INT NOT NULL DEFAULT 0, best_streak INT NOT NULL DEFAULT 0, last_played_at TIMESTAMPTZ, created_at TIMESTAMPTZ NOT NULL DEFAULT now() ) `); await client.query(` CREATE TABLE IF NOT EXISTS games ( id BIGSERIAL PRIMARY KEY, player_id TEXT NOT NULL REFERENCES players(id) ON DELETE CASCADE, target INT NOT NULL, attempts INT NOT NULL, won BOOLEAN NOT NULL, finished_at TIMESTAMPTZ NOT NULL DEFAULT now() ) `); await client.query(` CREATE INDEX IF NOT EXISTS idx_players_scoreboard ON players (best_attempts NULLS LAST, last_played_at) `); await client.query(` CREATE INDEX IF NOT EXISTS idx_games_player_history ON games (player_id, finished_at DESC) `); console.log("[txt-game migration-000] score schema created"); } finally { await client.end(); }