chore: 重写初始提交(清空历史,整理后全量提交)
This commit is contained in:
@@ -0,0 +1,146 @@
|
||||
-- ============================================================
|
||||
-- addon/mqttbroker/install.sql —— mqttbroker 插件数据表
|
||||
-- 框架约定:插件安装时由 ywxapp\service\AddonService 执行本文件
|
||||
-- (仅允许 CREATE TABLE / INSERT,见 importsql 白名单)。
|
||||
-- 表名须为 __PREFIX__<插件名>_*,与 __PREFIX__addon 等核心表命名一致。
|
||||
-- 时间字段统一约定:create_at / update_at / delete_at
|
||||
-- ============================================================
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `__PREFIX__mqttbroker_connection` (
|
||||
`id` int unsigned NOT NULL AUTO_INCREMENT,
|
||||
`client_id` varchar(191) NOT NULL DEFAULT '' COMMENT 'MQTT客户端标识',
|
||||
`username` varchar(191) DEFAULT NULL COMMENT '用户名',
|
||||
`ip` varchar(64) DEFAULT NULL COMMENT '客户端IP',
|
||||
`status` tinyint(1) DEFAULT '1' COMMENT '1在线 0离线',
|
||||
`create_at` int DEFAULT NULL COMMENT '连接时间',
|
||||
`update_at` int DEFAULT NULL COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_client_id` (`client_id`),
|
||||
KEY `idx_status` (`status`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='MQTT客户端连接表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `__PREFIX__mqttbroker_message` (
|
||||
`id` int unsigned NOT NULL AUTO_INCREMENT,
|
||||
`client_id` varchar(191) DEFAULT NULL COMMENT '发布者client_id',
|
||||
`topic` varchar(255) NOT NULL DEFAULT '' COMMENT '主题',
|
||||
`payload` longtext COMMENT '消息内容',
|
||||
`qos` tinyint(1) DEFAULT '0' COMMENT 'QoS等级',
|
||||
`retain` tinyint(1) DEFAULT '0' COMMENT '是否保留消息',
|
||||
`source` varchar(32) DEFAULT 'client' COMMENT '来源:client 客户端 / manual 后台手动',
|
||||
`create_at` int DEFAULT NULL COMMENT '时间',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_topic` (`topic`),
|
||||
KEY `idx_create_at` (`create_at`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='MQTT消息日志表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `__PREFIX__mqttbroker_topic` (
|
||||
`id` int unsigned NOT NULL AUTO_INCREMENT,
|
||||
`client_id` varchar(191) NOT NULL DEFAULT '' COMMENT '订阅者client_id',
|
||||
`topic` varchar(255) NOT NULL DEFAULT '' COMMENT '订阅主题(支持通配符)',
|
||||
`qos` tinyint(1) DEFAULT '0' COMMENT 'QoS等级',
|
||||
`create_at` int DEFAULT NULL COMMENT '订阅时间',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_client_id` (`client_id`),
|
||||
KEY `idx_topic` (`topic`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='MQTT订阅关系表';
|
||||
|
||||
-- 认证账号表(allow_anonymous=0 或提供用户名时校验密码)
|
||||
CREATE TABLE IF NOT EXISTS `__PREFIX__mqttbroker_auth` (
|
||||
`id` int unsigned NOT NULL AUTO_INCREMENT,
|
||||
`username` varchar(191) NOT NULL DEFAULT '' COMMENT '用户名',
|
||||
`password` varchar(191) NOT NULL DEFAULT '' COMMENT '密码(bcrypt哈希,兼容明文)',
|
||||
`is_superuser` tinyint(1) NOT NULL DEFAULT '0' COMMENT '超级用户跳过ACL',
|
||||
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1启用 0禁用',
|
||||
`remark` varchar(255) DEFAULT NULL COMMENT '备注',
|
||||
`create_at` int DEFAULT NULL,
|
||||
`update_at` int DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_username` (`username`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='MQTT认证账号表';
|
||||
|
||||
-- ACL 主题权限表(按 sort 顺序匹配,命中即决定 allow/deny)
|
||||
CREATE TABLE IF NOT EXISTS `__PREFIX__mqttbroker_acl` (
|
||||
`id` int unsigned NOT NULL AUTO_INCREMENT,
|
||||
`target_type` varchar(16) NOT NULL DEFAULT 'all' COMMENT 'all/user/client',
|
||||
`target` varchar(191) NOT NULL DEFAULT '' COMMENT '匹配值:用户名/clientid,all时忽略',
|
||||
`topic` varchar(255) NOT NULL DEFAULT '' COMMENT '主题过滤器,支持通配符与占位符%u %c',
|
||||
`access` tinyint(1) NOT NULL DEFAULT '3' COMMENT '1订阅 2发布 3两者',
|
||||
`allow` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1允许 0拒绝',
|
||||
`sort` int NOT NULL DEFAULT '0' COMMENT '匹配优先级,越小越先',
|
||||
`remark` varchar(255) DEFAULT NULL COMMENT '备注',
|
||||
`create_at` int DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_sort` (`sort`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='MQTT ACL权限表';
|
||||
|
||||
-- 保留消息持久化表(重启后恢复 retained)
|
||||
CREATE TABLE IF NOT EXISTS `__PREFIX__mqttbroker_retain` (
|
||||
`id` int unsigned NOT NULL AUTO_INCREMENT,
|
||||
`topic` varchar(255) NOT NULL DEFAULT '' COMMENT '主题',
|
||||
`payload` longblob COMMENT '消息内容(二进制安全)',
|
||||
`qos` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'QoS等级',
|
||||
`update_at` int DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_topic` (`topic`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='MQTT保留消息表';
|
||||
|
||||
-- 离线消息队列表(clean=false 会话离线期间的 QoS1/2 消息)
|
||||
CREATE TABLE IF NOT EXISTS `__PREFIX__mqttbroker_offline` (
|
||||
`id` int unsigned NOT NULL AUTO_INCREMENT,
|
||||
`client_id` varchar(191) NOT NULL DEFAULT '' COMMENT '目标订阅者client_id',
|
||||
`topic` varchar(255) NOT NULL DEFAULT '' COMMENT '主题',
|
||||
`payload` longblob COMMENT '消息内容(二进制安全)',
|
||||
`qos` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'QoS等级',
|
||||
`create_at` int DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_client_id` (`client_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='MQTT离线消息队列表';
|
||||
|
||||
-- 实时运行指标快照(Broker 周期写入单行 id=1,后台仪表盘轮询读取,跨进程安全)
|
||||
CREATE TABLE IF NOT EXISTS `__PREFIX__mqttbroker_stats` (
|
||||
`id` int unsigned NOT NULL,
|
||||
`uptime` int DEFAULT '0' COMMENT '运行时长(秒)',
|
||||
`clients_online` int DEFAULT '0' COMMENT '在线连接数',
|
||||
`clients_total` int DEFAULT '0' COMMENT '累计会话数',
|
||||
`subscriptions` int DEFAULT '0' COMMENT '订阅关系数',
|
||||
`messages_received` int DEFAULT '0' COMMENT '累计接收消息数',
|
||||
`messages_sent` int DEFAULT '0' COMMENT '累计发送消息数',
|
||||
`retained` int DEFAULT '0' COMMENT '保留消息数',
|
||||
`timestamp` int DEFAULT '0' COMMENT '快照时间',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='MQTT实时运行指标快照';
|
||||
|
||||
-- 转发规则表(规则引擎:匹配源主题后转发到外部 Broker,如 EMQX)
|
||||
CREATE TABLE IF NOT EXISTS `__PREFIX__mqttbroker_rule` (
|
||||
`id` int unsigned NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(191) NOT NULL DEFAULT '' COMMENT '规则名称',
|
||||
`source_filter` varchar(255) NOT NULL DEFAULT '' COMMENT '源主题过滤器(支持通配符 + #)',
|
||||
`target_type` varchar(16) NOT NULL DEFAULT 'mqtt' COMMENT '转发目标类型:mqtt',
|
||||
`target_broker` varchar(255) NOT NULL DEFAULT '' COMMENT '外部Broker地址 host:port',
|
||||
`target_clientid` varchar(191) DEFAULT '' COMMENT '连接外部Broker的clientId(可选)',
|
||||
`target_username` varchar(191) DEFAULT '' COMMENT '外部Broker用户名(可选)',
|
||||
`target_password` varchar(191) DEFAULT '' COMMENT '外部Broker密码(可选)',
|
||||
`target_topic` varchar(255) NOT NULL DEFAULT '' COMMENT '转发目标主题,支持 ${topic} 变量',
|
||||
`target_qos` tinyint(1) NOT NULL DEFAULT '0' COMMENT '转发QoS',
|
||||
`enabled` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1启用 0停用',
|
||||
`remark` varchar(255) DEFAULT NULL COMMENT '备注',
|
||||
`create_at` int DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_enabled` (`enabled`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='MQTT转发规则(规则引擎)';
|
||||
|
||||
-- 手动发布出站队列(后台/API 发布经 DB 出栈,Broker 消费后内部路由,零外部依赖)
|
||||
CREATE TABLE IF NOT EXISTS `__PREFIX__mqttbroker_outbox` (
|
||||
`id` int unsigned NOT NULL AUTO_INCREMENT,
|
||||
`topic` varchar(255) NOT NULL DEFAULT '' COMMENT '主题',
|
||||
`payload` longblob COMMENT '消息内容(二进制安全)',
|
||||
`qos` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'QoS等级',
|
||||
`retain` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否保留',
|
||||
`source` varchar(32) DEFAULT 'manual' COMMENT '来源: manual/api/admin',
|
||||
`create_at` int DEFAULT NULL,
|
||||
`status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '0待投递 1已投递',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_status` (`status`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='MQTT手动发布出站队列(跨进程内部路由)';
|
||||
Reference in New Issue
Block a user