| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384 |
- SET NAMES utf8mb4;
- SET FOREIGN_KEY_CHECKS = 0;
- CREATE DATABASE IF NOT EXISTS `mqtt_vue_dashboard` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- USE `mqtt_vue_dashboard`;
- DROP TABLE IF EXISTS `users`;
- CREATE TABLE `users` (
- `id` varchar(36) NOT NULL COMMENT '用户ID',
- `username` varchar(50) NOT NULL COMMENT '用户名',
- `password` varchar(255) NOT NULL COMMENT '密码(加密)',
- `email` varchar(100) DEFAULT NULL COMMENT '邮箱',
- `role` enum('admin','user','viewer') NOT NULL DEFAULT 'user',
- `created_at` timestamp NOT NULL DEFAULT current_timestamp COMMENT '创建时间',
- `updated_at` timestamp NOT NULL DEFAULT current_timestamp ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
- PRIMARY KEY (`id`),
- UNIQUE KEY `username` (`username`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';
- INSERT INTO `users` (`id`, `username`, `password`, `email`, `role`) VALUES
- (UUID(), 'admin', '$2a$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2uheWG/igi.', 'admin@example.com', 'admin');
- DROP TABLE IF EXISTS `pages`;
- CREATE TABLE `pages` (
- `id` int NOT NULL AUTO_INCREMENT,
- `name` varchar(50) NOT NULL COMMENT '页面名称',
- `path` varchar(100) NOT NULL COMMENT '页面路径',
- `description` varchar(200) DEFAULT NULL COMMENT '页面描述',
- `created_at` timestamp NULL DEFAULT current_timestamp,
- `updated_at` timestamp NULL DEFAULT current_timestamp ON UPDATE CURRENT_TIMESTAMP,
- PRIMARY KEY (`id`),
- UNIQUE KEY `uk_path` (`path`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
- INSERT INTO `pages` (`name`, `path`, `description`) VALUES
- ('仪表板', '/dashboard', '系统概览和数据统计'),
- ('设备管理', '/devices', '设备列表和状态监控'),
- ('房间管理', '/rooms', '房间和设备绑定'),
- ('OTA升级', '/ota', '固件管理和OTA升级'),
- ('连接管理', '/connections', 'MQTT连接监控'),
- ('消息管理', '/messages', 'MQTT消息查看'),
- ('传感器数据', '/sensor-data', '传感器数据可视化'),
- ('客户端认证', '/client-auth', 'MQTT客户端认证管理'),
- ('访问控制', '/client-acl', 'MQTT客户端ACL管理'),
- ('认证日志', '/auth-log', '认证操作日志'),
- ('系统日志', '/system-log', '系统运行日志'),
- ('系统设置', '/settings', '系统配置管理');
- DROP TABLE IF EXISTS `user_permissions`;
- CREATE TABLE `user_permissions` (
- `id` int NOT NULL AUTO_INCREMENT,
- `user_id` varchar(36) NOT NULL,
- `page_id` int NOT NULL,
- `created_at` timestamp NULL DEFAULT current_timestamp,
- PRIMARY KEY (`id`),
- UNIQUE KEY `uk_user_page` (`user_id`, `page_id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
- DROP TABLE IF EXISTS `devices`;
- CREATE TABLE `devices` (
- `id` bigint NOT NULL AUTO_INCREMENT COMMENT '设备ID',
- `clientid` varchar(100) NOT NULL COMMENT 'MQTT客户端ID',
- `device_name` varchar(100) DEFAULT NULL COMMENT '设备名称',
- `username` varchar(100) DEFAULT NULL,
- `firmware_version` varchar(50) DEFAULT NULL COMMENT '固件版本',
- `device_ip_port` varchar(100) DEFAULT NULL COMMENT '设备IP:端口',
- `last_ip_port` varchar(100) DEFAULT NULL COMMENT '最后连接的IP:端口',
- `status` enum('online','offline','unknown') DEFAULT 'unknown' COMMENT '设备状态',
- `last_event_time` datetime DEFAULT NULL COMMENT '最后事件时间',
- `last_online_time` datetime DEFAULT NULL COMMENT '最后上线时间',
- `last_offline_time` datetime DEFAULT NULL COMMENT '最后下线时间',
- `online_duration` int DEFAULT 0 COMMENT '累计在线时长(秒)',
- `connect_count` int DEFAULT 0 COMMENT '累计连接次数',
- `rssi` int DEFAULT NULL COMMENT 'WiFi信号强度(dBm)',
- `created_at` timestamp NULL DEFAULT current_timestamp COMMENT '设备创建时间',
- `updated_at` timestamp NULL DEFAULT current_timestamp ON UPDATE CURRENT_TIMESTAMP COMMENT '设备更新时间',
- PRIMARY KEY (`id`),
- UNIQUE KEY `clientid` (`clientid`),
- KEY `idx_status` (`status`),
- KEY `idx_ip_port` (`device_ip_port`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='设备管理表';
- DROP TABLE IF EXISTS `rooms`;
- CREATE TABLE `rooms` (
- `id` int NOT NULL AUTO_INCREMENT COMMENT '房间唯一标识ID',
- `name` varchar(100) NOT NULL COMMENT '房间名称',
- `floor_id` int NOT NULL COMMENT '所在楼层ID',
- `room_number` varchar(20) NOT NULL COMMENT '房间编号',
- `room_type` varchar(50) NOT NULL COMMENT '房间类型',
- `area` decimal(8,2) DEFAULT NULL COMMENT '房间面积(平方米)',
- `description` text DEFAULT NULL COMMENT '房间描述',
- `status` enum('active','inactive','maintenance') DEFAULT 'active' COMMENT '房间状态',
- `orientation` varchar(20) DEFAULT '东' COMMENT '房间朝向',
- `created_at` timestamp NULL DEFAULT current_timestamp COMMENT '创建时间',
- `updated_at` timestamp NULL DEFAULT current_timestamp ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
- PRIMARY KEY (`id`),
- KEY `idx_floor_id` (`floor_id`),
- KEY `idx_status` (`status`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='房间表';
- DROP TABLE IF EXISTS `room_devices`;
- CREATE TABLE `room_devices` (
- `id` int NOT NULL AUTO_INCREMENT COMMENT '设备唯一标识ID',
- `name` varchar(100) NOT NULL COMMENT '设备名称',
- `type` varchar(50) NOT NULL COMMENT '设备类型',
- `model` varchar(100) DEFAULT NULL COMMENT '设备型号',
- `room_id` int NOT NULL COMMENT '所属房间ID',
- `status` enum('online','offline','error') DEFAULT 'offline' COMMENT '设备状态',
- `last_seen` timestamp NULL DEFAULT NULL COMMENT '最后在线时间',
- `properties` longtext DEFAULT NULL COMMENT '设备属性JSON',
- `created_at` timestamp NULL DEFAULT current_timestamp COMMENT '创建时间',
- `updated_at` timestamp NULL DEFAULT current_timestamp ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
- PRIMARY KEY (`id`),
- KEY `idx_room_id` (`room_id`),
- KEY `idx_status` (`status`),
- CONSTRAINT `room_devices_ibfk_1` FOREIGN KEY (`room_id`) REFERENCES `rooms` (`id`) ON DELETE CASCADE
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='房间设备表';
- DROP TABLE IF EXISTS `device_bindings`;
- CREATE TABLE `device_bindings` (
- `id` int NOT NULL AUTO_INCREMENT,
- `device_clientid` varchar(100) NOT NULL COMMENT '设备客户端ID',
- `room_id` int NOT NULL COMMENT '房间ID',
- `device_name` varchar(255) DEFAULT NULL COMMENT '在房间中的设备显示名称',
- `device_type` varchar(100) DEFAULT NULL COMMENT '在房间中的设备类型',
- `properties` text DEFAULT NULL COMMENT 'JSON格式额外属性',
- `created_at` timestamp NULL DEFAULT current_timestamp COMMENT '创建时间',
- `updated_at` timestamp NULL DEFAULT current_timestamp ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
- PRIMARY KEY (`id`),
- UNIQUE KEY `unique_device_binding` (`device_clientid`),
- KEY `idx_room_id` (`room_id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='设备与房间绑定关系表';
- DROP TABLE IF EXISTS `mqtt_messages`;
- CREATE TABLE `mqtt_messages` (
- `id` bigint NOT NULL AUTO_INCREMENT COMMENT '自增主键',
- `clientid` varchar(100) NOT NULL COMMENT '客户端ID',
- `topic` varchar(512) NOT NULL COMMENT '消息主题',
- `payload` text DEFAULT NULL COMMENT '消息内容',
- `qos` tinyint NOT NULL DEFAULT 0 COMMENT 'QoS等级',
- `retain` tinyint(1) NOT NULL DEFAULT 0 COMMENT '保留标志',
- `message_id` varchar(64) DEFAULT NULL COMMENT 'MQTT消息ID',
- `message_type` enum('publish','subscribe','unsubscribe') NOT NULL DEFAULT 'publish' COMMENT '消息类型',
- `timestamp` bigint NOT NULL COMMENT '消息时间戳(毫秒)',
- `node` varchar(100) NOT NULL DEFAULT '' COMMENT '节点',
- `username` varchar(100) DEFAULT NULL COMMENT '用户名',
- `proto_ver` tinyint NOT NULL DEFAULT 4 COMMENT 'MQTT协议版本',
- `payload_format` varchar(50) DEFAULT 'text' COMMENT '消息格式',
- `created_at` timestamp NULL DEFAULT current_timestamp COMMENT '记录创建时间',
- `message_time` datetime NOT NULL DEFAULT current_timestamp COMMENT '消息时间',
- PRIMARY KEY (`id`),
- KEY `idx_clientid` (`clientid`),
- KEY `idx_topic` (`topic`(255)),
- KEY `idx_timestamp` (`timestamp`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='MQTT消息存储表';
- DROP TABLE IF EXISTS `client_connections`;
- CREATE TABLE `client_connections` (
- `id` bigint NOT NULL AUTO_INCREMENT COMMENT '自增主键',
- `username` varchar(100) DEFAULT NULL COMMENT '客户端用户名',
- `clientid` varchar(100) NOT NULL COMMENT '客户端ID',
- `event` varchar(50) NOT NULL COMMENT '事件类型',
- `timestamp` datetime DEFAULT NULL COMMENT '事件时间',
- `connected_at` datetime DEFAULT NULL COMMENT '连接时间',
- `node` varchar(100) NOT NULL DEFAULT '' COMMENT '节点',
- `peername` varchar(100) DEFAULT NULL COMMENT '客户端地址',
- `sockname` varchar(100) DEFAULT NULL COMMENT '服务端地址',
- `proto_name` varchar(20) NOT NULL DEFAULT 'MQTT' COMMENT '协议名称',
- `proto_ver` int NOT NULL DEFAULT 4 COMMENT '协议版本',
- `keepalive` int NOT NULL DEFAULT 60 COMMENT '心跳间隔(秒)',
- `clean_start` tinyint(1) DEFAULT 1 COMMENT '是否清洁会话',
- `reason` varchar(50) DEFAULT NULL COMMENT '断开原因',
- `connection_duration` int DEFAULT NULL COMMENT '连接持续时间(秒)',
- `created_at` timestamp NULL DEFAULT current_timestamp COMMENT '记录创建时间',
- PRIMARY KEY (`id`),
- KEY `idx_clientid` (`clientid`),
- KEY `idx_timestamp` (`timestamp`),
- KEY `idx_event` (`event`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='客户端连接事件表';
- DROP TABLE IF EXISTS `client_auth`;
- CREATE TABLE `client_auth` (
- `id` int NOT NULL AUTO_INCREMENT COMMENT '客户端认证记录ID',
- `username` varchar(255) NOT NULL COMMENT '客户端用户名',
- `clientid` varchar(255) NOT NULL COMMENT '客户端ID',
- `password_hash` varchar(255) NOT NULL COMMENT '密码哈希值',
- `salt` varchar(255) DEFAULT NULL,
- `status` enum('enabled','disabled') DEFAULT 'enabled' COMMENT '客户端状态',
- `device_type` varchar(100) DEFAULT 'unknown' COMMENT '设备类型',
- `auth_method` enum('password','token','certificate','external') NOT NULL DEFAULT 'password' COMMENT '认证方法',
- `description` text DEFAULT NULL COMMENT '客户端描述',
- `is_superuser` tinyint(1) DEFAULT 0 COMMENT '是否为超级用户',
- `use_salt` tinyint(1) DEFAULT 1 COMMENT '是否使用盐值加密',
- `created_at` timestamp NULL DEFAULT current_timestamp COMMENT '创建时间',
- `updated_at` timestamp NULL DEFAULT current_timestamp ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
- `last_login_at` timestamp NULL DEFAULT NULL COMMENT '最后登录时间',
- PRIMARY KEY (`id`),
- UNIQUE KEY `unique_username_clientid` (`username`, `clientid`),
- KEY `idx_username` (`username`),
- KEY `idx_clientid` (`clientid`),
- KEY `idx_status` (`status`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='客户端认证表';
- DROP TABLE IF EXISTS `client_acl`;
- CREATE TABLE `client_acl` (
- `id` int NOT NULL AUTO_INCREMENT COMMENT '主键ID',
- `username` varchar(100) NOT NULL COMMENT '用户名',
- `topic` varchar(255) NOT NULL COMMENT 'MQTT主题',
- `action` enum('publish','subscribe','pubsub') NOT NULL COMMENT '操作类型',
- `permission` enum('allow','deny') NOT NULL DEFAULT 'allow' COMMENT '权限类型',
- `priority` int DEFAULT 0 COMMENT '权限优先级',
- `description` text DEFAULT NULL COMMENT '权限规则描述',
- `created_at` timestamp NULL DEFAULT current_timestamp COMMENT '创建时间',
- `updated_at` timestamp NULL DEFAULT current_timestamp ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
- PRIMARY KEY (`id`),
- KEY `idx_topic` (`topic`),
- KEY `idx_action` (`action`),
- KEY `idx_permission` (`permission`),
- KEY `idx_username` (`username`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='客户端访问控制列表';
- DROP TABLE IF EXISTS `auth_log`;
- CREATE TABLE `auth_log` (
- `id` int NOT NULL AUTO_INCREMENT COMMENT '主键ID',
- `clientid` varchar(255) NOT NULL COMMENT '客户端ID',
- `username` varchar(255) NOT NULL COMMENT '用户名',
- `ip_address` varchar(45) NOT NULL COMMENT '客户端IP地址',
- `operation_type` enum('connect','publish','subscribe','disconnect') NOT NULL COMMENT '操作类型',
- `auth_method` varchar(50) DEFAULT NULL COMMENT '认证方法',
- `result` enum('success','failure') NOT NULL COMMENT '认证结果',
- `reason` varchar(255) DEFAULT NULL COMMENT '认证失败原因',
- `topic` varchar(255) DEFAULT NULL COMMENT 'MQTT主题',
- `created_at` timestamp NULL DEFAULT current_timestamp COMMENT '日志记录时间',
- PRIMARY KEY (`id`),
- KEY `idx_clientid` (`clientid`),
- KEY `idx_username` (`username`),
- KEY `idx_operation_type` (`operation_type`),
- KEY `idx_result` (`result`),
- KEY `idx_created_at` (`created_at`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='认证日志表';
- DROP TABLE IF EXISTS `sensor_data`;
- CREATE TABLE `sensor_data` (
- `id` bigint NOT NULL AUTO_INCREMENT,
- `device_id` varchar(100) NOT NULL COMMENT '设备ID',
- `topic` varchar(200) NOT NULL COMMENT 'MQTT主题',
- `data_type` varchar(50) DEFAULT NULL COMMENT '数据类型',
- `value` text DEFAULT NULL COMMENT '原始数据',
- `timestamp` datetime NOT NULL COMMENT '数据时间戳',
- `created_at` timestamp NULL DEFAULT current_timestamp,
- PRIMARY KEY (`id`),
- KEY `idx_device_timestamp` (`device_id`, `timestamp`),
- KEY `idx_topic` (`topic`),
- KEY `idx_data_type` (`data_type`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='传感器数据表';
- DROP TABLE IF EXISTS `firmware_files`;
- CREATE TABLE `firmware_files` (
- `id` int NOT NULL AUTO_INCREMENT,
- `version` varchar(50) NOT NULL,
- `filename` varchar(255) NOT NULL,
- `filepath` varchar(255) NOT NULL,
- `filesize` bigint NOT NULL,
- `md5sum` varchar(32) NOT NULL,
- `description` text DEFAULT NULL,
- `status` enum('active','inactive') DEFAULT 'active',
- `created_by` varchar(50) DEFAULT NULL,
- `created_at` timestamp NULL DEFAULT current_timestamp,
- `updated_at` timestamp NULL DEFAULT current_timestamp ON UPDATE CURRENT_TIMESTAMP,
- PRIMARY KEY (`id`),
- UNIQUE KEY `version` (`version`),
- KEY `idx_status` (`status`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='固件文件表';
- DROP TABLE IF EXISTS `ota_tasks`;
- CREATE TABLE `ota_tasks` (
- `id` int NOT NULL AUTO_INCREMENT,
- `device_id` varchar(255) NOT NULL,
- `firmware_id` int NOT NULL,
- `status` enum('pending','downloading','installing','success','failed') DEFAULT 'pending',
- `progress` int DEFAULT 0,
- `error_message` text DEFAULT NULL,
- `start_time` timestamp NULL DEFAULT NULL,
- `end_time` timestamp NULL DEFAULT NULL,
- `created_at` timestamp NULL DEFAULT current_timestamp,
- `updated_at` timestamp NULL DEFAULT current_timestamp ON UPDATE CURRENT_TIMESTAMP,
- PRIMARY KEY (`id`),
- KEY `idx_device_id` (`device_id`),
- KEY `idx_firmware_id` (`firmware_id`),
- KEY `idx_status` (`status`),
- CONSTRAINT `ota_tasks_ibfk_1` FOREIGN KEY (`firmware_id`) REFERENCES `firmware_files` (`id`) ON DELETE CASCADE
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='OTA升级任务表';
- DROP TABLE IF EXISTS `system_logs`;
- CREATE TABLE `system_logs` (
- `id` int NOT NULL AUTO_INCREMENT,
- `level` enum('info','warn','error','debug') NOT NULL COMMENT '日志级别',
- `message` text NOT NULL COMMENT '日志消息',
- `source` varchar(255) NOT NULL COMMENT '日志来源',
- `module` varchar(255) DEFAULT NULL COMMENT '模块名称',
- `user_id` int DEFAULT NULL COMMENT '用户ID',
- `username` varchar(255) DEFAULT NULL COMMENT '用户名',
- `ip_address` varchar(45) DEFAULT NULL COMMENT 'IP地址',
- `details` text DEFAULT NULL COMMENT '详细信息',
- `created_at` datetime DEFAULT current_timestamp COMMENT '创建时间',
- PRIMARY KEY (`id`),
- KEY `idx_level` (`level`),
- KEY `idx_source` (`source`),
- KEY `idx_module` (`module`),
- KEY `idx_created_at` (`created_at`),
- KEY `idx_user_id` (`user_id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统运行日志表';
- DROP TABLE IF EXISTS `wifi_configurations`;
- CREATE TABLE `wifi_configurations` (
- `id` int NOT NULL AUTO_INCREMENT,
- `device_clientid` varchar(255) NOT NULL COMMENT '设备客户端ID',
- `ssid` varchar(32) NOT NULL COMMENT 'WiFi SSID',
- `password` varchar(64) NOT NULL COMMENT 'WiFi密码',
- `status` enum('pending','sent','applied','failed') DEFAULT 'sent' COMMENT '配置状态',
- `sent_at` timestamp NULL DEFAULT NULL COMMENT '发送时间',
- `applied_at` timestamp NULL DEFAULT NULL COMMENT '应用时间',
- `created_at` timestamp NULL DEFAULT current_timestamp COMMENT '创建时间',
- `updated_at` timestamp NULL DEFAULT current_timestamp ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
- PRIMARY KEY (`id`),
- KEY `idx_device_clientid` (`device_clientid`),
- KEY `idx_status` (`status`),
- KEY `idx_created_at` (`created_at`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='设备WiFi配置表';
- CREATE OR REPLACE VIEW `vw_client_connections` AS
- SELECT `clientid`, `username`, `peername`, `connected_at`, `timestamp` AS `disconnected_at`,
- `reason`, `timestamp`, `event`, `node`, `sockname`, `proto_name`, `proto_ver`
- FROM `client_connections`;
- CREATE OR REPLACE VIEW `vw_device_logs` AS
- SELECT
- NULL as id,
- cc.clientid,
- CASE
- WHEN cc.event = 'client.connected' THEN 'connect'
- WHEN cc.event = 'client.disconnected' THEN 'disconnect'
- ELSE 'unknown'
- END as event_type,
- cc.timestamp as event_time,
- NULL as topic,
- NULL as payload,
- NULL as qos,
- cc.username,
- cc.peername,
- cc.proto_ver,
- cc.node,
- cc.reason as details,
- cc.timestamp as created_at
- FROM client_connections cc
- WHERE cc.event IN ('client.connected', 'client.disconnected')
- UNION ALL
- SELECT
- mm.id,
- mm.clientid,
- CASE
- WHEN mm.message_type = 'publish' THEN 'publish'
- WHEN mm.message_type = 'subscribe' THEN 'subscribe'
- WHEN mm.message_type = 'unsubscribe' THEN 'unsubscribe'
- ELSE mm.message_type
- END as event_type,
- mm.message_time as event_time,
- mm.topic,
- mm.payload,
- mm.qos,
- mm.username,
- NULL as peername,
- mm.proto_ver,
- mm.node,
- NULL as details,
- mm.created_at
- FROM mqtt_messages mm
- WHERE mm.message_type IN ('publish', 'subscribe', 'unsubscribe')
- ORDER BY event_time DESC;
- SET FOREIGN_KEY_CHECKS = 1;
|