-- ============================================================
-- 防火墙站点表
-- ============================================================
DROP TABLE IF EXISTS firewall_site;
CREATE TABLE firewall_site (
    ID           BIGINT       NOT NULL AUTO_INCREMENT  COMMENT '主键',
    REVISION     INT          DEFAULT 1                COMMENT '乐观锁',
    CREATED_BY   VARCHAR(32)  DEFAULT 'system'         COMMENT '创建人',
    CREATED_TIME DATETIME     DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    UPDATED_BY   VARCHAR(32)  DEFAULT 'system'         COMMENT '更新人',
    UPDATED_TIME DATETIME     DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    SITE_NAME     VARCHAR(100) NOT NULL                 COMMENT '站点名称',
    DOMAIN        VARCHAR(200) NOT NULL                 COMMENT '站点域名',
    NGINX_CONF    VARCHAR(255)                          COMMENT 'Nginx配置文件路径',
    STATUS        TINYINT      DEFAULT 1                COMMENT '状态：1-启用，0-禁用',
    REMARK        VARCHAR(255)                          COMMENT '备注',
    PRIMARY KEY (ID),
    UNIQUE KEY uk_domain (DOMAIN)
) COMMENT = '防火墙站点表';

-- ============================================================
-- 国家白名单规则表
-- ============================================================
DROP TABLE IF EXISTS firewall_country_rule;
CREATE TABLE firewall_country_rule (
    ID           BIGINT       NOT NULL AUTO_INCREMENT  COMMENT '主键',
    REVISION     INT          DEFAULT 1                COMMENT '乐观锁',
    CREATED_BY   VARCHAR(32)  DEFAULT 'system'         COMMENT '创建人',
    CREATED_TIME DATETIME     DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    UPDATED_BY   VARCHAR(32)  DEFAULT 'system'         COMMENT '更新人',
    UPDATED_TIME DATETIME     DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    SITE_ID       BIGINT       NOT NULL                 COMMENT '站点ID，关联firewall_site表',
    COUNTRY_CODE  VARCHAR(10)  NOT NULL                 COMMENT '国家编码（ISO 3166-1 alpha-2，如 JP/US/SG）',
    COUNTRY_NAME  VARCHAR(50)                           COMMENT '国家名称',
    ENABLED       TINYINT      DEFAULT 1                COMMENT '状态：1-启用，0-禁用',
    PRIMARY KEY (ID),
    UNIQUE KEY uk_site_country (SITE_ID, COUNTRY_CODE),
    INDEX idx_site_id (SITE_ID)
) COMMENT = '防火墙国家白名单规则表';

-- ============================================================
-- IP白名单表
-- ============================================================
DROP TABLE IF EXISTS firewall_ip_white;
CREATE TABLE firewall_ip_white (
    ID           BIGINT       NOT NULL AUTO_INCREMENT  COMMENT '主键',
    REVISION     INT          DEFAULT 1                COMMENT '乐观锁',
    CREATED_BY   VARCHAR(32)  DEFAULT 'system'         COMMENT '创建人',
    CREATED_TIME DATETIME     DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    UPDATED_BY   VARCHAR(32)  DEFAULT 'system'         COMMENT '更新人',
    UPDATED_TIME DATETIME     DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    SITE_ID       BIGINT       NOT NULL                 COMMENT '站点ID',
    IP            VARCHAR(64)  NOT NULL                 COMMENT 'IP地址（支持IPv4/IPv6）',
    REMARK        VARCHAR(255)                          COMMENT '备注',
    EXPIRE_TIME   DATETIME                              COMMENT '过期时间，NULL表示永久有效',
    ENABLED       TINYINT      DEFAULT 1                COMMENT '状态：1-启用，0-禁用',
    PRIMARY KEY (ID),
    UNIQUE KEY uk_site_ip (SITE_ID, IP),
    INDEX idx_ip (IP)
) COMMENT = '防火墙IP白名单表';

-- ----------------------------
-- 默认数据
-- ----------------------------
INSERT INTO firewall_site (SITE_NAME, DOMAIN, STATUS) VALUES
('默认站点', 'shop.xxx.com', 1);
