30 lines
1.7 KiB
SQL
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);
|