-- VPS 厂商池（先建，nodes 有 FK 引用）
CREATE TABLE providers (
  id          BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  name        VARCHAR(64) NOT NULL,
  api_kind    VARCHAR(32) NOT NULL,                -- 开通自动化所用 API 适配器
  regions     JSON NOT NULL,
  pool        ENUM('consumable','premium') NOT NULL,
  enabled     BOOLEAN NOT NULL DEFAULT TRUE,
  note        VARCHAR(255) NULL                    -- 凭证不入库，存独立 secrets 管理
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 节点：蓝本 nodes 表 + 拓扑/生命周期扩展字段
CREATE TABLE nodes (
  id           BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  uuid         CHAR(36) NOT NULL UNIQUE,
  region       VARCHAR(8) NOT NULL,               -- HK / JP / SG / US…
  name_zh      VARCHAR(64) NOT NULL,
  name_en      VARCHAR(64) NOT NULL,
  role         ENUM('entry','relay','exit') NOT NULL DEFAULT 'entry',
  tier         ENUM('free','pro') NOT NULL,        -- 消耗品池 / 精品池
  endpoint     VARCHAR(255) NOT NULL,              -- ip:port（REALITY）
  hy2_port     INT NULL,                           -- Hysteria2 端口跳跃区间起点
  reality_pbk  VARCHAR(64) NOT NULL,
  reality_sni  VARCHAR(128) NOT NULL,              -- 伪装目标 SNI
  provider_id  BIGINT UNSIGNED NOT NULL,
  tags         JSON NULL,
  status       ENUM('provisioning','probing','up','draining','down','destroyed')
               NOT NULL DEFAULT 'provisioning',    -- 生命周期状态机
  weight       INT NOT NULL DEFAULT 100,
  created_at   DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
  FOREIGN KEY (provider_id) REFERENCES providers(id),
  INDEX idx_status_tier (status, tier)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
