Files
back-hokm/internal/store/migrations/011_tournaments.sql
T
2026-07-07 15:17:33 +03:30

30 lines
1.7 KiB
SQL

-- تورنومنتِ امتیازی: بازیکنان با پرداختِ ورودی ثبت‌نام می‌کنند و در بازه‌ی
-- تورنومنت با بردنِ بازی‌ها امتیاز می‌گیرند؛ در پایان، نفراتِ برتر جایزه می‌گیرند.
CREATE TABLE IF NOT EXISTS tournaments (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
description TEXT NOT NULL DEFAULT '',
entry_fee INTEGER NOT NULL DEFAULT 0, -- ورودی به سکه
prizes TEXT NOT NULL DEFAULT '[]', -- JSON: سکه‌ی جایزه به‌ترتیبِ رتبه [رتبه۱, رتبه۲, ...]
starts_at TEXT NOT NULL, -- زمانِ شروع (UTC)
ends_at TEXT NOT NULL, -- زمانِ پایان (UTC)
settled INTEGER NOT NULL DEFAULT 0, -- آیا جوایز پرداخت شده
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%d %H:%M:%S','now'))
);
CREATE TABLE IF NOT EXISTS tournament_entries (
tournament_id INTEGER NOT NULL,
user_id INTEGER NOT NULL,
points INTEGER NOT NULL DEFAULT 0,
games INTEGER NOT NULL DEFAULT 0,
wins INTEGER NOT NULL DEFAULT 0,
prize INTEGER NOT NULL DEFAULT 0, -- سکه‌ی جایزه‌ی دریافتی (پس از تسویه)
joined_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%d %H:%M:%S','now')),
PRIMARY KEY (tournament_id, user_id),
FOREIGN KEY (tournament_id) REFERENCES tournaments(id) ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS idx_tournament_entries_user ON tournament_entries(user_id);
CREATE INDEX IF NOT EXISTS idx_tournaments_window ON tournaments(ends_at, settled);