-- اقتصاد: کیف‌پول، بلیط، XP/سطح، VIP، اسکین کارت، پاداش تبلیغ، خریدهای IAP

ALTER TABLE users ADD COLUMN tickets        INTEGER NOT NULL DEFAULT 0;
ALTER TABLE users ADD COLUMN xp             INTEGER NOT NULL DEFAULT 0;
ALTER TABLE users ADD COLUMN trophies       INTEGER NOT NULL DEFAULT 0;
ALTER TABLE users ADD COLUMN vip_until      TEXT;            -- زمان پایان VIP (UTC) یا NULL
ALTER TABLE users ADD COLUMN selected_card  TEXT NOT NULL DEFAULT 'simple';
ALTER TABLE users ADD COLUMN last_daily_at  TEXT;            -- آخرین دریافت سکه روزانه
ALTER TABLE users ADD COLUMN xp_boost_mult  INTEGER NOT NULL DEFAULT 1;
ALTER TABLE users ADD COLUMN xp_boost_until TEXT;            -- زمان پایان بوستر XP

-- ستون نوع ارز در دفتر تراکنش (coin | ticket)
ALTER TABLE wallet_tx ADD COLUMN currency TEXT NOT NULL DEFAULT 'coin';

-- اسکین کارت‌های متعلق به کاربر (کارت ساده پیش‌فرض و رایگان است)
CREATE TABLE IF NOT EXISTS user_cards (
    user_id    INTEGER NOT NULL,
    card_id    TEXT    NOT NULL,
    created_at TEXT    NOT NULL DEFAULT (datetime('now')),
    PRIMARY KEY (user_id, card_id),
    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);

-- پاداش تبلیغ rewarded؛ token یکتا برای جلوگیری از دریافت تکراری
CREATE TABLE IF NOT EXISTS ad_rewards (
    id         INTEGER PRIMARY KEY AUTOINCREMENT,
    user_id    INTEGER NOT NULL,
    token      TEXT    NOT NULL UNIQUE,
    amount     INTEGER NOT NULL,
    created_at TEXT    NOT NULL DEFAULT (datetime('now')),
    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);

CREATE INDEX IF NOT EXISTS idx_ad_rewards_user ON ad_rewards(user_id, created_at);

-- خریدهای درون‌برنامه‌ای (Cafe Bazaar / Myket)؛ purchase_token یکتا به ازای فروشگاه
CREATE TABLE IF NOT EXISTS purchases (
    id             INTEGER PRIMARY KEY AUTOINCREMENT,
    user_id        INTEGER NOT NULL,
    store          TEXT    NOT NULL,   -- bazaar | myket
    product_id     TEXT    NOT NULL,   -- SKU بسته
    purchase_token TEXT    NOT NULL,
    status         TEXT    NOT NULL,   -- pending | verified | failed
    coins          INTEGER NOT NULL DEFAULT 0,
    tickets        INTEGER NOT NULL DEFAULT 0,
    vip_days       INTEGER NOT NULL DEFAULT 0,
    created_at     TEXT    NOT NULL DEFAULT (datetime('now')),
    UNIQUE (store, purchase_token),
    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
