-- install.sql
-- این فایل را یک‌بار روی دیتابیس MySQL خودتان اجرا کنید (phpMyAdmin یا خط فرمان)

CREATE TABLE IF NOT EXISTS panels (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    base_url VARCHAR(255) NOT NULL,     -- مثال: https://p.parvane.store  (بدون / انتهایی)
    api_key VARCHAR(255) NOT NULL,      -- کلید rk_...
    is_active TINYINT(1) NOT NULL DEFAULT 1,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS bot_users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    telegram_id BIGINT NOT NULL UNIQUE,
    username VARCHAR(100) NULL,
    first_name VARCHAR(150) NULL,
    wallet_balance BIGINT NOT NULL DEFAULT 0,  -- به تومان
    is_blocked TINYINT(1) NOT NULL DEFAULT 0,
    state VARCHAR(50) NULL,             -- برای مکالمات چند مرحله‌ای
    state_data TEXT NULL,               -- JSON موقت مکالمه
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS representatives (
    id INT AUTO_INCREMENT PRIMARY KEY,
    bot_user_id INT NOT NULL,
    panel_id INT NOT NULL,
    panel_username VARCHAR(100) NOT NULL,   -- یوزرنیم ادمین ساخته‌شده در پنل
    panel_password VARCHAR(100) NOT NULL,   -- پسورد ادمین (برای نمایش به کاربر)
    price_per_gb BIGINT NOT NULL,           -- قیمت هر گیگ در لحظه ساخت (تومان)
    last_usage_bytes BIGINT NOT NULL DEFAULT 0,
    status ENUM('active','disabled','deleted') NOT NULL DEFAULT 'active',
    disable_reason VARCHAR(100) NULL,       -- مثلا 'no_balance'
    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;

CREATE TABLE IF NOT EXISTS transactions (
    id INT AUTO_INCREMENT PRIMARY KEY,
    bot_user_id INT NOT NULL,
    amount BIGINT NOT NULL,
    receipt_file_id VARCHAR(255) NULL,   -- file_id عکس فیش در تلگرام
    receipt_text VARCHAR(500) NULL,
    status ENUM('pending','approved','rejected') NOT NULL DEFAULT 'pending',
    admin_note VARCHAR(255) NULL,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    reviewed_at DATETIME NULL,
    FOREIGN KEY (bot_user_id) REFERENCES bot_users(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS usage_log (
    id INT AUTO_INCREMENT PRIMARY KEY,
    representative_id INT NOT NULL,
    bytes_delta BIGINT NOT NULL,
    cost BIGINT NOT NULL,
    balance_after BIGINT NOT NULL,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (representative_id) REFERENCES representatives(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS settings (
    `key` VARCHAR(100) PRIMARY KEY,
    `value` VARCHAR(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

INSERT INTO settings (`key`, `value`) VALUES ('price_per_gb', '5000')
    ON DUPLICATE KEY UPDATE `key`=`key`;
