

-- 1. Bảng Users (Người dùng)
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    email VARCHAR(255) UNIQUE NOT NULL,
    password_hash VARCHAR(255) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

-- 2. Bảng Proxies (Danh sách IP VPN do admin quản lý)
CREATE TABLE proxies (
    id INT AUTO_INCREMENT PRIMARY KEY,
    ip_address VARCHAR(45) NOT NULL,
    port INT DEFAULT 1194, -- Port mặc định cho VPN
    username VARCHAR(100),
    password VARCHAR(100),
    country VARCHAR(100) NOT NULL,
    city VARCHAR(100) NOT NULL,
    flag_url VARCHAR(255),
    is_free BOOLEAN DEFAULT FALSE, -- Phân loại proxy Free hoặc Premium
    is_active BOOLEAN DEFAULT TRUE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 3. Bảng Plans (Các gói dịch vụ: Giờ, Ngày, Tuần, Tháng...)
CREATE TABLE plans (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL, -- vd: "Gói 1 Ngày", "Gói 1 Tháng"
    duration_hours INT NOT NULL, -- Thời lượng tính bằng giờ (vd: 1 ngày = 24)
    price DECIMAL(10, 2) NOT NULL, -- Giá tiền (VNĐ)
    description TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 4. Bảng API_Keys (Lưu trữ Key sau khi mua và trạng thái kích hoạt)
CREATE TABLE api_keys (
    id INT AUTO_INCREMENT PRIMARY KEY,
    key_code VARCHAR(100) UNIQUE NOT NULL,
    plan_id INT NOT NULL,
    user_id INT, -- Key có thể chưa gán cho ai cho đến khi nhập vào ứng dụng
    is_activated BOOLEAN DEFAULT FALSE, -- Trạng thái Key đã kích hoạt trên App chưa
    activated_at TIMESTAMP NULL, -- Thời điểm khách hàng bật kích hoạt
    expires_at TIMESTAMP NULL, -- Thời điểm hết hạn (tính từ actived_at + duration_hours)
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (plan_id) REFERENCES plans(id) ON DELETE CASCADE,
    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE SET NULL
);

-- 5. Bảng Orders (Lịch sử giao dịch mua hàng)
CREATE TABLE orders (
    id INT AUTO_INCREMENT PRIMARY KEY,
    order_code VARCHAR(50) UNIQUE NOT NULL, -- Mã chuyển khoản (vd: VPN1234)
    user_id INT NOT NULL,
    plan_id INT NOT NULL,
    amount DECIMAL(10, 2) NOT NULL,
    status ENUM('pending', 'paid', 'cancelled') DEFAULT 'pending', -- Trạng thái đơn
    paid_at TIMESTAMP NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
    FOREIGN KEY (plan_id) REFERENCES plans(id) ON DELETE CASCADE
);
