feat: add tournoment

This commit is contained in:
2026-07-07 15:17:33 +03:30
parent bcfaf35d73
commit e58c50d6e5
10 changed files with 744 additions and 1 deletions
@@ -0,0 +1,29 @@
-- تورنومنتِ امتیازی: بازیکنان با پرداختِ ورودی ثبت‌نام می‌کنند و در بازه‌ی
-- تورنومنت با بردنِ بازی‌ها امتیاز می‌گیرند؛ در پایان، نفراتِ برتر جایزه می‌گیرند.
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);
@@ -0,0 +1,11 @@
-- رتبه از بازیِ عمومی: به‌جای یک میزِ «رتبه‌بندی»ِ جدا (که کاربر را گیج می‌کرد)،
-- هر میزِ عمومی به برنده/بازنده امتیازِ رتبه می‌دهد (متناسب با سطحِ میز). میزِ
-- تورنومنت هم عمومی است و همین امتیاز را می‌دهد. میزِ اختصاصیِ «رتبه‌بندی» حذف می‌شود.
UPDATE table_tiers SET rank_reward = 10 WHERE id = 'beginner';
UPDATE table_tiers SET rank_reward = 20 WHERE id = 'amateur';
UPDATE table_tiers SET rank_reward = 25 WHERE id = 'pro';
UPDATE table_tiers SET rank_reward = 40 WHERE id = 'master';
-- حذفِ میزِ رتبه‌بندیِ اختصاصی از انتخابِ میز (سیستمِ رتبه و جدولِ قهرمانان می‌ماند).
UPDATE table_tiers SET enabled = 0 WHERE id = 'ranked';