-- migrate_v2.sql
-- فقط برای کسانی که قبلا install.sql نسخه‌ی قبلی را اجرا کرده‌اند و می‌خواهند
-- بدون از دست دادن اطلاعات، به نسخه‌ی جدید (انتخاب سرویس + تست رایگان + کسر دقیق کیف پول) ارتقا بدهند.
-- این فایل را فقط یک‌بار، بعد از گرفتن بکاپ از دیتابیس، اجرا کنید.

ALTER TABLE panels
    ADD COLUMN default_service_id INT NULL AFTER api_key,
    ADD COLUMN default_service_name VARCHAR(150) NULL AFTER default_service_id;

ALTER TABLE representatives
    ADD COLUMN pending_fraction DECIMAL(20,6) NOT NULL DEFAULT 0 AFTER last_usage_bytes;

CREATE TABLE IF NOT EXISTS wallet_adjustments (
    id INT AUTO_INCREMENT PRIMARY KEY,
    bot_user_id INT NOT NULL,
    amount BIGINT NOT NULL,
    reason VARCHAR(255) NULL,
    admin_telegram_id BIGINT NOT NULL,
    balance_after BIGINT NOT NULL,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (bot_user_id) REFERENCES bot_users(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS panel_trial_settings (
    panel_id INT PRIMARY KEY,
    enabled TINYINT(1) NOT NULL DEFAULT 1,
    data_limit_gb DECIMAL(10,2) NOT NULL DEFAULT 1,
    duration_hours INT NOT NULL DEFAULT 24,
    max_per_user INT NOT NULL DEFAULT 1,
    reset_days INT NOT NULL DEFAULT 0,
    reset_cycle INT NOT NULL DEFAULT 1,
    last_reset_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (panel_id) REFERENCES panels(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS trials (
    id INT AUTO_INCREMENT PRIMARY KEY,
    bot_user_id INT NOT NULL,
    panel_id INT NOT NULL,
    panel_username VARCHAR(120) NOT NULL,
    subscription_url VARCHAR(500) NULL,
    data_limit_bytes BIGINT NOT NULL DEFAULT 0,
    expires_at DATETIME NULL,
    cycle INT NOT NULL DEFAULT 1,
    cleaned TINYINT(1) NOT NULL DEFAULT 0,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (bot_user_id) REFERENCES bot_users(id),
    FOREIGN KEY (panel_id) REFERENCES panels(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- برای پنل‌هایی که از قبل ثبت شده‌اند، یک ردیف تنظیمات تست پیش‌فرض بساز
INSERT INTO panel_trial_settings (panel_id, enabled, data_limit_gb, duration_hours, max_per_user, reset_days, reset_cycle)
SELECT id, 1, 1, 24, 1, 0, 1 FROM panels
WHERE id NOT IN (SELECT panel_id FROM panel_trial_settings);

-- توجه: default_service_id پنل‌های قبلی خالی می‌ماند. از منوی «مدیریت پنل‌ها → ویرایش سرویس»
-- برای هرکدام یک سرویس انتخاب کنید، وگرنه ساخت اکانت تست روی آن پنل غیرفعال می‌ماند.
