-- تورنومنتِ امتیازی: بازیکنان با پرداختِ ورودی ثبت‌نام می‌کنند و در بازه‌ی -- تورنومنت با بردنِ بازی‌ها امتیاز می‌گیرند؛ در پایان، نفراتِ برتر جایزه می‌گیرند. 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);