-- تراکنش‌ها: ثبتِ نوع محصول (kind) و قیمتِ پرداخت‌شده (price_toman) در خریدها.
-- تا پیش از این، خرید فقط بسته‌ی دریافتی (سکه/بلیط/VIP) را ثبت می‌کرد؛ نه نوع و نه
-- مبلغ را. این دو ستون برای پنلِ «تراکنش‌ها» لازم است و از این پس هنگامِ ثبتِ خرید
-- پر می‌شوند. ردیف‌های قدیمی با توجه به کاتالوگِ فعلی backfill می‌شوند.

ALTER TABLE purchases ADD COLUMN kind        TEXT    NOT NULL DEFAULT '';
ALTER TABLE purchases ADD COLUMN price_toman INTEGER NOT NULL DEFAULT 0;

-- Backfill نوع: اولویت سکه → بلیط → VIP → بوستر. ردیف‌های غیرِ verified هیچ
-- بسته‌ای نگرفته‌اند پس نوعشان نامعلوم می‌ماند ('' نه 'booster' تا دوپاره نشود).
UPDATE purchases SET kind = CASE
  WHEN status != 'verified' THEN ''
  WHEN coins   > 0 THEN 'coin'
  WHEN tickets > 0 THEN 'ticket'
  WHEN vip_days > 0 THEN 'vip'
  ELSE 'booster'
END
WHERE kind = '';

-- Backfill قیمت؛ با توجه به نوع، چون شناسه‌ی محصول بین جدول‌های کاتالوگ مشترک است
-- (مثلاً 'small' هم در coin_packages هست و هم در ticket_packages). محصولِ حذف‌شده → ۰.
UPDATE purchases SET price_toman = CASE kind
  WHEN 'coin'    THEN COALESCE((SELECT price_toman FROM coin_packages   WHERE id = purchases.product_id), 0)
  WHEN 'ticket'  THEN COALESCE((SELECT price_toman FROM ticket_packages WHERE id = purchases.product_id), 0)
  WHEN 'booster' THEN COALESCE((SELECT price_toman FROM boosters        WHERE id = purchases.product_id), 0)
  WHEN 'vip'     THEN COALESCE((SELECT price_toman FROM vip_packages    WHERE id = purchases.product_id), 0)
  ELSE 0
END
WHERE price_toman = 0;

-- ایندکس برای فیلترِ وضعیت + آمارِ روزانه/ماهانه در پنلِ تراکنش‌ها.
CREATE INDEX IF NOT EXISTS idx_purchases_status_created ON purchases(status, created_at);
