/**
 * 1、新增 sys_user 表
 * 2、添加默认用户 admin/admin
 */
DROP TABLE IF EXISTS `sys_user`;
CREATE TABLE `sys_user` (
  `id` varchar(64) NOT NULL,
  `name` varchar(255) NOT NULL,
  `user_name` varchar(255) NOT NULL,
  `pwd` varchar(255) NOT NULL,
  `access_level` varchar(255) NOT NULL,
  `language` VARCHAR(256) NOT NULL DEFAULT 'en' COMMENT '语言',
  `last_login_ip` VARCHAR(256) NOT NULL DEFAULT ''  COMMENT '最后登录IP',
  `last_login_timestamp` BIGINT(20) NOT NULL  COMMENT '最后登录时间',
  `create_timestamp` BIGINT(20) NOT NULL COMMENT '创建时间戳',
  `update_timestamp` BIGINT(20) NOT NULL COMMENT '更新时间戳',
  `create_user_id` 	VARCHAR(64) NOT NULL COMMENT '创建人id',
  `update_user_id` 	VARCHAR(64) NOT NULL COMMENT '更新人id',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_user_name` (`user_name`) USING BTREE,
  KEY `idx_name` (`name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 添加内置用户
INSERT INTO `sys_user`(`id`, `name`, `user_name`, `pwd`, `access_level`, `language`, `last_login_ip`, `last_login_timestamp`, `create_timestamp`, `update_timestamp`, `create_user_id`, `update_user_id`) VALUES ('admin', 'admin', 'admin', 'ad9d757e620d5d9cd8e32c3dbcf37525', 'administrator', 'en', '', UNIX_TIMESTAMP(NOW())*1000, UNIX_TIMESTAMP(NOW())*1000, UNIX_TIMESTAMP(NOW())*1000, 'admin', 'admin');

/**
 * 1、新增 sys_role 表
 * 2、新增 sys_menu 表
 * 3、新增 sys_user_role 表
 * 4、新增 sys_role_menu 表
 * 5、添加初始化数据
 */
DROP TABLE IF EXISTS `sys_role`;
CREATE TABLE `sys_role` (
  `id` varchar(64) NOT NULL,
  `name` varchar(255) NOT NULL,
  `i18n` varchar(255) NOT NULL DEFAULT '',
  `remark` varchar(255) NOT NULL DEFAULT '',
  `build_in` int(10) NOT NULL DEFAULT 0,
  `create_timestamp` bigint(20) NOT NULL,
  `update_timestamp` bigint(20) NOT NULL,
  `create_user_id` varchar(64) NOT NULL,
  `update_user_id` varchar(64) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `idx_name` (`name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 添加内置角色
INSERT INTO `sys_role`(`id`, `name`, `i18n`, `remark`, `build_in`, `create_timestamp`, `update_timestamp`, `create_user_id`, `update_user_id`) VALUES ('owner', 'Owner', 'owner', 'The system built-in owner user role', 1, 1729580481001, 1729580481000, 'admin', 'admin');
INSERT INTO `sys_role`(`id`, `name`, `i18n`, `remark`, `build_in`, `create_timestamp`, `update_timestamp`, `create_user_id`, `update_user_id`) VALUES ('maintainer', 'Maintainer', 'maintainer', 'The system built-in maintainer user role', 1, 1729580481002, 1729580481000, 'admin', 'admin');
INSERT INTO `sys_role`(`id`, `name`, `i18n`, `remark`, `build_in`, `create_timestamp`, `update_timestamp`, `create_user_id`, `update_user_id`) VALUES ('developer', 'Developer', 'developer', 'The system built-in developer user role', 1, 1729580481003, 1729580481000, 'admin', 'admin');
INSERT INTO `sys_role`(`id`, `name`, `i18n`, `remark`, `build_in`, `create_timestamp`, `update_timestamp`, `create_user_id`, `update_user_id`) VALUES ('guest', 'Guest', 'guest', 'The system built-in guest user role', 1, 1729580481004, 1729580481000, 'admin', 'admin');


DROP TABLE IF EXISTS `sys_menu`;
CREATE TABLE `sys_menu` (
  `id` varchar(64) NOT NULL,
  `name` varchar(255) NOT NULL,
  `i18n` varchar(255) NOT NULL DEFAULT '',
  `pid` varchar(64) NOT NULL DEFAULT '',
  `type` varchar(64) NOT NULL,
  `perms` varchar(255) NOT NULL DEFAULT '',
  `route` varchar(255) NOT NULL DEFAULT '',
  `icon` varchar(255) NOT NULL DEFAULT '',
  `order` int(10) NOT NULL DEFAULT 1,
  `create_timestamp` bigint(20) NOT NULL,
  `state` int(10) NOT NULL DEFAULT 1,
  PRIMARY KEY (`id`),
  KEY `idx_name` (`name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

DROP TABLE IF EXISTS `sys_user_role`;
CREATE TABLE `sys_user_role` (
  `user_id` varchar(64) NOT NULL,
  `role_id` varchar(64) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

INSERT INTO `sys_user_role`(`user_id`, `role_id`) VALUES ('admin', 'admin');

DROP TABLE IF EXISTS `sys_role_menu`;
CREATE TABLE `sys_role_menu` (
  `menu_id` varchar(64) NOT NULL,
  `role_id` varchar(64) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;


/**
 * 1、新增 sys_config 表
 */
DROP TABLE IF EXISTS `sys_config`;
CREATE TABLE `sys_config` (
  `param_key` varchar(50) NOT NULL COMMENT 'key',
  `param_value` text DEFAULT NULL,
  `status` tinyint(4) DEFAULT 1 COMMENT '状态   0：隐藏   1：显示',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`param_key`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统配置表';

/**
  初始化 magic api 时区配置 ，默认 Asia/Shanghai
 */

INSERT INTO `sys_config` (`param_key`, `param_value`, `status`, `remark`) VALUES ( 'timezone', 'Asia/Shanghai', 1, '时区配置');

/**
 * 新增 magic api file 表
 */
DROP TABLE IF EXISTS `magic_api_file`;

CREATE TABLE `magic_api_file` (
  `file_path` varchar(512) NOT NULL,
  `file_content` mediumtext,
  PRIMARY KEY (`file_path`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

DROP TABLE IF EXISTS `magic_api_backup`;

CREATE TABLE `magic_api_backup` (
  `id` varchar(32) NOT NULL COMMENT '原对象ID',
  `create_date` bigint(13) NOT NULL COMMENT '备份时间',
  `tag` varchar(32) DEFAULT NULL COMMENT '标签',
  `type` varchar(32) DEFAULT NULL COMMENT '类型',
  `name` varchar(64) DEFAULT NULL COMMENT '原名称',
  `content` blob COMMENT '备份内容',
  `create_by` varchar(64) DEFAULT NULL COMMENT '操作人',
  PRIMARY KEY (`id`,`create_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

/**
 * 新增 sys_file  sys_file_content 表
 */
DROP TABLE IF EXISTS `sys_file`;
CREATE TABLE `sys_file` (
  `id` varchar(64) NOT NULL COMMENT '文件md5值',
  `name` varchar(255) NOT NULL,
  `suffix` varchar(255) NOT NULL DEFAULT '' COMMENT '文件名后缀',
  `content_type` varchar(255) DEFAULT NULL,
  `size` bigint(20) NOT NULL,
  `path` varchar(512) NOT NULL COMMENT 'file:相对路径 或 db:md5',
  `create_timestamp` bigint(20) NOT NULL,
  `remark` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `idx_name` (`name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

DROP TABLE IF EXISTS `sys_file_content`;
CREATE TABLE `sys_file_content` (
  `id` varchar(64) NOT NULL,
  `content` longblob NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

/**
 * 新增 runner 表
 */
DROP TABLE IF EXISTS `runner`;
CREATE TABLE `runner` (
    `id` varchar(64) NOT NULL COMMENT '主键',
    `name` varchar(256) NOT NULL DEFAULT '' COMMENT '名称',
    `token` varchar(64) NOT NULL DEFAULT '' COMMENT 'token',
    `tags` varchar(256) NOT NULL DEFAULT '' COMMENT '标签,多个逗号分隔',
    `support_platforms` varchar(256) NOT NULL DEFAULT '' COMMENT '支持的平台; 可选值：android,ios,windows; 多个逗号分隔; 例：android,ios',
    `share_flag` int(1) NOT NULL DEFAULT 1 COMMENT '共享标识; 1：共享  0：不共享，仅创建人可用',
    `description` text NOT NULL DEFAULT '' COMMENT '描述信息',
    `status` varchar(64) NOT NULL DEFAULT 'online' COMMENT '状态；可选值：online,offline',
    `last_heartbeat_timestamp` bigint(20) NOT NULL DEFAULT (UNIX_TIMESTAMP(NOW()) * 1000) COMMENT '最后心跳时间戳',
    `create_timestamp` bigint(20) NOT NULL COMMENT '创建时间戳',
    `update_timestamp` bigint(20) NOT NULL COMMENT '更新时间戳',
    `create_user_id` varchar(64) NOT NULL COMMENT '创建人',
    `update_user_id` varchar(64) NOT NULL COMMENT '更新人',
    `workspace_id` varchar(64) NOT NULL DEFAULT '' COMMENT '工作空间ID',
    PRIMARY KEY (`id`) USING BTREE,
    KEY `idx_name` (`name`) USING BTREE,
    KEY `idx_workspace_id` (`workspace_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

/**
 * 新增 playbook 表
 */
DROP TABLE IF EXISTS `playbook`;
CREATE TABLE `playbook`  (
    `id` varchar(64) NOT NULL COMMENT '主键',
    `name` varchar(256) NOT NULL DEFAULT '' COMMENT '名称',
    `tags` varchar(256) NOT NULL DEFAULT '' COMMENT '标签',
    `path` text NOT NULL COMMENT '脚本文件路径',
    `description` text NOT NULL DEFAULT '' COMMENT '描述信息',
    `create_timestamp` bigint(20) NOT NULL COMMENT '创建时间戳',
    `update_timestamp` bigint(20) NOT NULL COMMENT '更新时间戳',
    `create_user_id` varchar(64) NOT NULL COMMENT '创建人',
    `update_user_id` varchar(64) NOT NULL COMMENT '更新人',
    `workspace_id` varchar(64) NOT NULL DEFAULT '' COMMENT '工作空间ID',
    PRIMARY KEY (`id`) USING BTREE,
    KEY `idx_name` (`name`) USING BTREE,
    KEY `idx_workspace_id` (`workspace_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

/**
 * 新增 job 表
 */
DROP TABLE IF EXISTS `job`;
CREATE TABLE `job`  (
    `id` varchar(64) NOT NULL COMMENT '主键',
    `playbook_id` varchar(64) NOT NULL DEFAULT '' COMMENT 'Playbook ID',
    `package_id` varchar(64) NOT NULL DEFAULT '' COMMENT 'Package ID',
    `env_id` varchar(64) NOT NULL DEFAULT '' COMMENT 'env ID',
    `playbook_param` varchar(1024) NOT NULL DEFAULT '' COMMENT 'playbook运行参数',
    `start_timestamp` bigint(20) NOT NULL DEFAULT -1 COMMENT '开始时间戳',
    `end_timestamp` bigint(20) NOT NULL DEFAULT -1 COMMENT '结束时间戳',
    `status` varchar(64) NOT NULL DEFAULT '' COMMENT '状态; 可选值: created,pending,running,passed,failed,cancel',
    `pcap_id` varchar(64) NOT NULL DEFAULT '' COMMENT 'PCAP ID',
    `log_path` varchar(256) NOT NULL DEFAULT '' COMMENT '日志文件路径',
    `create_timestamp` bigint(20) NOT NULL COMMENT '创建时间戳',
    `update_timestamp` bigint(20) NOT NULL COMMENT '更新时间戳',
    `create_user_id` varchar(64) NOT NULL COMMENT '创建人',
    `update_user_id` varchar(64) NOT NULL COMMENT '更新人',
    `workspace_id` varchar(64) NOT NULL DEFAULT '' COMMENT '工作空间ID',
    PRIMARY KEY (`id`) USING BTREE,
    KEY `idx_playbook_id` (`playbook_id`) USING BTREE,
    KEY `idx_package_id` (`package_id`) USING BTREE,
    KEY `idx_env_id` (`env_id`) USING BTREE,
    KEY `idx_workspace_id` (`workspace_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

/**
 * 新增 pcap 表
 */
DROP TABLE IF EXISTS `pcap`;
CREATE TABLE `pcap`  (
    `id` varchar(64) NOT NULL COMMENT '主键',
    `name` varchar(256) NOT NULL DEFAULT '' COMMENT '文件名称',
    `description` text NOT NULL DEFAULT '' COMMENT '描述信息',
    `path` varchar(256) NOT NULL DEFAULT '' COMMENT 'PCAP文件路径',
    `size` bigint(20) NOT NULL DEFAULT 0 COMMENT '文件大小',
    `md5` varchar(64) NOT NULL DEFAULT '' COMMENT '摘要值,根据文件md5值判断是否已上存在，存在则响应当前id',
    `status` varchar(64) NOT NULL DEFAULT '' COMMENT '状态,可选值 Uploaded，Analyzing，Completed',
    `summary` varchar(512) NOT NULL DEFAULT '{}' COMMENT '摘要信息, JSON 格式',
    `create_timestamp` bigint(20) NOT NULL COMMENT '创建时间戳',
    `create_user_id` varchar(64) NOT NULL COMMENT '创建人',
    `workspace_id` varchar(64) NOT NULL DEFAULT '' COMMENT '工作空间ID',
    PRIMARY KEY (`id`) USING BTREE,
    KEY `idx_name` (`name`) USING BTREE,
    KEY `idx_md5` (`md5`) USING BTREE,
    KEY `idx_workspace_id` (`workspace_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;


/**
 * 新增 application 表
 */
DROP TABLE IF EXISTS `application`;
CREATE TABLE `application`  (
    `id` varchar(64) NOT NULL COMMENT '主键',
    `name` varchar(256) NOT NULL DEFAULT '' COMMENT '应用名称',
    `tags` 	TEXT NOT NULL DEFAULT '' COMMENT '标签',
    `package_name` 	VARCHAR(512)  NOT NULL DEFAULT '{}' COMMENT '包名',
    `website` VARCHAR(1024)  NOT NULL DEFAULT '' COMMENT '网站',
    `provider` VARCHAR(256)  NOT NULL DEFAULT '' COMMENT '开发者',
    `status` VARCHAR(32)  NOT NULL DEFAULT '' COMMENT '状态:open,inprogress,done',
    `properties` VARCHAR(4096)  NOT NULL DEFAULT '{}' COMMENT '属性',
    `description` text NOT NULL DEFAULT '' COMMENT '描述信息',
    `create_timestamp` bigint(20) NOT NULL COMMENT '创建时间戳',
    `update_timestamp` bigint(20) NOT NULL COMMENT '更新时间戳',
    `create_user_id` varchar(64) NOT NULL COMMENT '创建人',
    `update_user_id` varchar(64) NOT NULL COMMENT '更新人',
    `workspace_id` varchar(64) NOT NULL DEFAULT '' COMMENT '工作空间ID',
    `op_version` int(10) NOT NULL DEFAULT 1 COMMENT '版本号',
    PRIMARY KEY (`id`) USING BTREE,
    KEY `idx_name` (`name`) USING BTREE,
    KEY `idx_workspace_id` (`workspace_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;


/**
 * 新增 application_log 表
 */
DROP TABLE IF EXISTS `application_log`;
CREATE TABLE `application_log`  (
    `id` varchar(64) NOT NULL COMMENT '主键',
    `name` varchar(256) NOT NULL DEFAULT '' COMMENT '应用名称',
    `tags` TEXT NOT NULL DEFAULT '' COMMENT '标签',
    `package_name` 	VARCHAR(512)  NOT NULL DEFAULT '{}' COMMENT '包名',
    `website` VARCHAR(1024)  NOT NULL DEFAULT '' COMMENT '网站',
    `provider` VARCHAR(256)  NOT NULL DEFAULT '' COMMENT '开发者',
    `status` VARCHAR(32)  NOT NULL DEFAULT '' COMMENT '状态:open,inprogress,done',
    `properties` VARCHAR(4096)  NOT NULL DEFAULT '{}' COMMENT '属性',
    `description` text NOT NULL DEFAULT '' COMMENT '描述信息',
    `create_timestamp` bigint(20) NOT NULL COMMENT '创建时间戳',
    `update_timestamp` bigint(20) NOT NULL COMMENT '更新时间戳',
    `create_user_id` varchar(64) NOT NULL COMMENT '创建人',
    `update_user_id` varchar(64) NOT NULL COMMENT '更新人',
    `workspace_id` varchar(64) NOT NULL DEFAULT '' COMMENT '工作空间ID',
    `op_version` int(10) NOT NULL DEFAULT 1 COMMENT '版本号',
    UNIQUE INDEX `index_id_version` (`id`, `op_version`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

/**
 * 新增 application_signature 表
 */
DROP TABLE IF EXISTS `application_signature`;
CREATE TABLE `application_signature`  (
    `id` VARCHAR(64) NOT NULL COMMENT '主键',
    `application_id` VARCHAR(64) NOT NULL COMMENT '应用id',
    `content` TEXT NOT NULL COMMENT '特征 json',
    `create_timestamp` BIGINT(20) NOT NULL COMMENT '创建时间戳',
    `create_user_id` VARCHAR(64) NOT NULL COMMENT '创建人',
    `op_version` INT(10) NOT NULL DEFAULT 1 COMMENT '版本号',
    UNIQUE INDEX `index_id_version` (`id`, `op_version`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

/**
 * 新增 application_note 表
 */
DROP TABLE IF EXISTS `application_note`;
CREATE TABLE `application_note`  (
    `id` VARCHAR(64) NOT NULL COMMENT '主键',
    `application_id` VARCHAR(64) NOT NULL COMMENT '应用id',
    `content` TEXT NOT NULL ,
    `create_timestamp` BIGINT(20) NOT NULL COMMENT '创建时间戳',
    `create_user_id` VARCHAR(64) NOT NULL COMMENT '创建人id',
    `op_version` INT(10) NOT NULL DEFAULT 1 COMMENT '版本号',
    UNIQUE INDEX `index_id_version` (`id`, `op_version`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

/**
 * 新增 application_attachment 表
 */
DROP TABLE IF EXISTS `application_attachment`;
CREATE TABLE `application_attachment`  (
    `id` VARCHAR(64) NOT NULL COMMENT '主键',
    `application_id` VARCHAR(64) NOT NULL COMMENT '应用id',
    `name` 	VARCHAR(256) NOT NULL COMMENT '文件名',
    `path` VARCHAR(512) NOT NULL COMMENT '文件路径',
    `create_timestamp` BIGINT(20) NOT NULL COMMENT '创建时间戳',
    `create_user_id` VARCHAR(64) NOT NULL COMMENT '创建人id',
    PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

/**
 * 新增 application_href 表
 */
DROP TABLE IF EXISTS `application_href`;
CREATE TABLE `application_href`  (
    `id` VARCHAR(64) NOT NULL COMMENT '主键',
    `application_id` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '应用id',
    `name` 	VARCHAR(256) NOT NULL DEFAULT '' COMMENT '名称',
    `url` VARCHAR(512) NOT NULL DEFAULT '' COMMENT 'url地址',
    `create_timestamp` BIGINT(20) NOT NULL COMMENT '创建时间戳',
    `create_user_id` VARCHAR(64) NOT NULL COMMENT '创建人id',
    PRIMARY KEY (`id`) USING BTREE,
    KEY `idx_name` (`name`) USING BTREE,
    KEY `idx_application_id` (`application_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

/**
 * 新增 package 表
 */
DROP TABLE IF EXISTS `package`;
CREATE TABLE `package` (
    `id` varchar(64) NOT NULL COMMENT '主键',
    `name` varchar(256) NOT NULL DEFAULT '' COMMENT '名称',
    `icon` text NOT NULL DEFAULT '' COMMENT '图标,图标文件base64内容',
    `description` text NOT NULL DEFAULT '' COMMENT '描述信息',
    `platform` varchar(256) NOT NULL DEFAULT '' COMMENT '操作系统; 可选值：android,ios,windows,linux',
    `version` varchar(256) NOT NULL DEFAULT '' COMMENT '安装包版本',
    `identifier` varchar(256) NOT NULL DEFAULT '' COMMENT '唯一标识;android：package name,ios：bundle id',
    `path` varchar(512) NOT NULL DEFAULT '' COMMENT '安装包文件路径',
    `size` bigint(20) NOT NULL DEFAULT 0 COMMENT '文件大小',
    `create_timestamp` bigint(20) NOT NULL COMMENT '创建时间戳',
    `update_timestamp` bigint(20) NOT NULL COMMENT '更新时间戳',
    `create_user_id` varchar(64) NOT NULL COMMENT '创建人',
    `update_user_id` varchar(64) NOT NULL COMMENT '更新人',
    `workspace_id` varchar(64) NOT NULL DEFAULT '' COMMENT '工作空间ID',
    PRIMARY KEY (`id`) USING BTREE,
    KEY `idx_name` (`name`) USING BTREE,
    KEY `idx_version` (`version`) USING BTREE,
    KEY `idx_workspace_id` (`workspace_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;


/**
 * 新增 signature 表
 */
DROP TABLE IF EXISTS `signature`;
CREATE TABLE `signature` (
    `id` varchar(64) NOT NULL COMMENT '主键',
    `app_id` varchar(64) NOT NULL DEFAULT '' COMMENT '应用ID',
    `name` varchar(256) NOT NULL DEFAULT '' COMMENT '名称',
    `tags` varchar(256) NOT NULL DEFAULT '' COMMENT '标签,多个逗号分隔',
    `description` text NOT NULL DEFAULT '' COMMENT '描述信息',
    `display_flag` int(1) NOT NULL DEFAULT 1 COMMENT '是否显示; 1：显示  0：不显示',
    `conditions` text NOT NULL DEFAULT '' COMMENT '条件',
    `op_version` bigint(20) NOT NULL DEFAULT 1 COMMENT '更新版本号, 默认：1;每次更新递增',
    `create_timestamp` bigint(20) NOT NULL COMMENT '创建时间戳',
    `update_timestamp` bigint(20) NOT NULL COMMENT '更新时间戳',
    `create_user_id` varchar(64) NOT NULL COMMENT '创建人',
    `update_user_id` varchar(64) NOT NULL COMMENT '更新人',
    `workspace_id` varchar(64) NOT NULL DEFAULT '' COMMENT '工作空间ID',
    PRIMARY KEY (`id`) USING BTREE,
    KEY `idx_app_id` (`app_id`) USING BTREE,
    KEY `idx_name` (`name`) USING BTREE,
    KEY `idx_op_version` (`op_version`) USING BTREE,
    KEY `idx_workspace_id` (`workspace_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

/**
 * 新增 workbook，workbook_member，workbook_resource 表
 */
DROP TABLE IF EXISTS `workbook`;
CREATE TABLE `workbook` (
    `id` varchar(64) NOT NULL COMMENT '主键',
    `name` varchar(256) NOT NULL DEFAULT '' COMMENT '名称',
    `tags` varchar(256) NOT NULL DEFAULT '' COMMENT '标签,多个逗号分隔',
    `visibility` varchar(16) NOT NULL DEFAULT 'private' COMMENT '可见程度,可选值：private，public 默认：private',
    `description` text NOT NULL DEFAULT '' COMMENT '描述信息',
    `create_timestamp` bigint(20) NOT NULL COMMENT '创建时间戳',
    `update_timestamp` bigint(20) NOT NULL COMMENT '更新时间戳',
    `create_user_id` varchar(64) NOT NULL COMMENT '创建人',
    `update_user_id` varchar(64) NOT NULL COMMENT '更新人',
    `workspace_id` varchar(64) NOT NULL DEFAULT '' COMMENT '工作空间ID',
    PRIMARY KEY (`id`) USING BTREE,
    KEY `idx_name` (`name`) USING BTREE,
    KEY `idx_workspace_id` (`workspace_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

DROP TABLE IF EXISTS `workbook_member`;
CREATE TABLE `workbook_member` (
    `workbook_id` varchar(64) NOT NULL COMMENT '主键',
    `user_id` varchar(64) NOT NULL COMMENT 'user ID',
    `create_timestamp` bigint(20) NOT NULL COMMENT '创建时间戳',
    `create_user_id` varchar(64) NOT NULL COMMENT '创建人',
    PRIMARY KEY (`workbook_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

DROP TABLE IF EXISTS `workbook_resource`;
CREATE TABLE `workbook_resource` (
    `id` varchar(64) NOT NULL COMMENT '主键',
    `workbook_id` varchar(64) NOT NULL COMMENT 'workbook ID',
    `resource_type` varchar(64) NOT NULL COMMENT '资源类型 可选值：package,signature,job,pcap',
    `resource_id` varchar(64) NOT NULL COMMENT '资源id',
    PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;


/**
 * 新增 workspace, workspace_member 表
 */
DROP TABLE IF EXISTS `workspace`;
CREATE TABLE `workspace` (
    `id` varchar(64) NOT NULL COMMENT '主键',
    `name` varchar(256) NOT NULL DEFAULT '' COMMENT '名称',
    `tags` varchar(256) NOT NULL DEFAULT '' COMMENT '标签,多个逗号分隔',
    `visibility` varchar(16) NOT NULL DEFAULT 'private' COMMENT '可见程度,可选值：private，public 默认：private',
    `properties` varchar(256) NOT NULL DEFAULT '' COMMENT '属性',
    `description` text NOT NULL DEFAULT '' COMMENT '描述信息',
    `create_timestamp` bigint(20) NOT NULL COMMENT '创建时间戳',
    `update_timestamp` bigint(20) NOT NULL COMMENT '更新时间戳',
    `create_user_id` varchar(64) NOT NULL COMMENT '创建人',
    `update_user_id` varchar(64) NOT NULL COMMENT '更新人',
    PRIMARY KEY (`id`) USING BTREE,
    KEY `idx_name` (`name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

INSERT INTO `workspace` (`id`, `name`, `tags`, `visibility`, `description`, `create_timestamp`, `update_timestamp`, `create_user_id`, `update_user_id`) VALUES ('1', 'default', '', 'private', '', 1722482392000, 1722482392000, 'admin', 'admin');

DROP TABLE IF EXISTS `workspace_member`;
CREATE TABLE `workspace_member` (
    `workspace_id` varchar(64) NOT NULL,
    `user_id` varchar(64) NOT NULL,
    `role_id` varchar(64) NOT NULL,
    `create_timestamp` bigint(20) NOT NULL COMMENT '创建时间戳',
    `create_user_id` varchar(64) NOT NULL COMMENT '创建人',
    KEY `idx_workspace_id` (`workspace_id`) USING BTREE,
    KEY `idx_user_id` (`user_id`) USING BTREE,
    KEY `idx_role_id` (`role_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

INSERT INTO `workspace_member` (`workspace_id`, `user_id`, `role_id`, `create_timestamp`, `create_user_id`) VALUES ('1', 'admin', 'owner', 1724291229000, 'admin');


/**
 * 新增 environment 表
 */
DROP TABLE IF EXISTS `environment`;
CREATE TABLE `environment`  (
    `id` varchar(64) NOT NULL COMMENT '主键',
    `name` varchar(256) NOT NULL DEFAULT '' COMMENT '名称',
    `location` varchar(256) NOT NULL DEFAULT '' COMMENT '位置',
    `platform` varchar(256) NOT NULL DEFAULT 'android' COMMENT '支持的平台，可选：android',
    `param` varchar(1024) NOT NULL DEFAULT '' COMMENT '连接参数',
    `description` text NOT NULL DEFAULT '' COMMENT '描述信息',
    `status` int(1) NOT NULL DEFAULT 0 COMMENT '状态,0：离线；1：在线',
    `last_health_check` bigint(20) NOT NULL DEFAULT -1 COMMENT '最后健康检查时间',
    `create_timestamp` bigint(20) NOT NULL COMMENT '创建时间戳',
    `update_timestamp` bigint(20) NOT NULL COMMENT '更新时间戳',
    `create_user_id` varchar(64) NOT NULL COMMENT '创建人',
    `update_user_id` varchar(64) NOT NULL COMMENT '更新人',
    PRIMARY KEY (`id`) USING BTREE,
    KEY `idx_name` (`name`) USING BTREE,
    KEY `idx_status` (`status`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;


/**
 * 新增 environment_workspace 表
 */
DROP TABLE IF EXISTS `environment_workspace`;
CREATE TABLE `environment_workspace`  (
  `id` varchar(64) NOT NULL COMMENT '主键',
  `env_id` varchar(64) NOT NULL DEFAULT '' COMMENT '环境id',
  `workspace_id` varchar(64) NOT NULL DEFAULT '' COMMENT '工作空间id',
  `create_timestamp` bigint(20) NOT NULL COMMENT '创建时间戳',
  `create_user_id` varchar(64) NOT NULL COMMENT '创建人',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `idx_workspace_id` (`workspace_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;


/**
 * 新增 environment_session 表
 */
DROP TABLE IF EXISTS `environment_session`;
CREATE TABLE `environment_session`  (
    `id` varchar(64) NOT NULL COMMENT '主键',
    `env_id` varchar(64) NOT NULL DEFAULT '' COMMENT '环境id',
    `user_id` varchar(64) NOT NULL DEFAULT '' COMMENT '用户id',
    `start_timestamp` bigint(20) NOT NULL COMMENT '开始时间',
    `end_timestamp` bigint(20) NOT NULL DEFAULT -1 COMMENT '结束时间',
    `status` int(1) NOT NULL DEFAULT 1 COMMENT '状态,1：使用中;2：已结束',
    `job_id` varchar(64) NOT NULL DEFAULT '' COMMENT '任务id',
    `workspace_id` varchar(64) NOT NULL DEFAULT '' COMMENT '工作空间ID',
    PRIMARY KEY (`id`) USING BTREE,
    KEY `idx_status` (`status`) USING BTREE,
    KEY `idx_env_id` (`env_id`) USING BTREE,
    KEY `idx_user_id` (`user_id`) USING BTREE,
    KEY `idx_job_id` (`job_id`) USING BTREE,
    KEY `idx_workspace_id` (`workspace_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
