本文主要是介绍数据拆解入库(暂时未拆解)---H5精准测试服务端接口及数据库表设计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
详细表设计:
range_coverage_js 与 range_coverage_js_file 是一对多的关系
range_coverage_js_file 与 range_coverage_js_statement 、range_coverage_js_fn、range_coverage_js_branch 一对多的关系
range_coverage_js_branch 与 range_coverage_js_branch_detail 是一对多的关系
range_coverage_js
主表(存储被测应用实时上报的原始数据)
CREATE TABLE `totoro_range`.`range_coverage_js` ( `id` bigint (20) NOT NULL AUTO_INCREMENT COMMENT '主键ID' , `app_name` VARCHAR (45) NULL COMMENT '被测应用名' , `commit_id` VARCHAR (45) NULL COMMENT '当前被测版本的commitId' , `branch` VARCHAR (45) NULL COMMENT '分支号' , `spring_id` VARCHAR (45) NULL COMMENT '(迭代)任务id' , `coverage_json_ceph_key` LONGTEXT NULL COMMENT '上传的覆盖率数据存储的key' , `update_time` DATETIME NULL COMMENT '更新时间' , `is_deleted` tinyint(1) NOT NULL COMMENT '0' COMMENT '是否删除' PRIMARY KEY (`id`)); |
前端读取文件:
range_coverage_js_file
(每个主表合并后的数据拆分解析后的存储文件表)
use totoro_range; CREATE TABLE `totoro_range`.`range_coverage_js_file` ( `id` INT NOT NULL AUTO_INCREMENT, `app_name` VARCHAR (45) NULL COMMENT '被测应用名' , `commit_id` VARCHAR (45) NULL COMMENT '当前被测版本的commitId' , `branch` VARCHAR (45) NULL COMMENT '分支号' , `spring_id` VARCHAR (45) NULL COMMENT '(迭代)任务id' , `path` VARCHAR (45) NULL COMMENT '覆盖率数据中path字段(路径+文件名)' , `range_file_id` INT NULL COMMENT 'diff文件id' , `update_time` DATETIME NULL COMMENT '更新时间' , `is_deleted` tinyint(1) NOT NULL COMMENT '0' COMMENT '是否删除' , `merge_coverage_Json` longtext COMMENT '单个文件marge后的覆盖率文件' , PRIMARY KEY (`id`)) COMMENT = '文件覆盖率数据' ; |
有range_file_id 但是没有path 对应其它文件就是没有覆盖率
CREATE TABLE `totoro_range`.`range_coverage_js_statement` ( `id` INT NOT NULL AUTO_INCREMENT, `file_id` INT NULL COMMENT '对应js_file的表的文件id' , `statement_index` VARCHAR (45) NULL COMMENT '语句索引编号' , `start_line` INT NULL COMMENT '语句开始行' , `start_column` INT NULL COMMENT '语句开始列' , `end_line` INT NULL COMMENT '语句结束行' , `end_column` INT NULL COMMENT '语句结束列' , `coverage_times` INT NULL COMMENT '覆盖次数' , `update_time` DATETIME NULL COMMENT '更新时间' , `is_deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否删除' , PRIMARY KEY (`id`)) COMMENT = '语句覆盖率数据' ; |
use totoro_range; CREATE TABLE `totoro_range`.`range_coverage_js_fn` ( `id` INT NOT NULL AUTO_INCREMENT, `file_id` INT NULL COMMENT '对应js_file的表的文件id' , `fn_index` VARCHAR (45) NULL COMMENT '方法索引编号' , `fn_name` VARCHAR (45) NULL COMMENT '方法名字' , `fn_decl_start_line` INT NULL COMMENT '方法申明开始行' , `fn_decl_start_column` INT NULL COMMENT '方法申明开始列' , `fn_decl_end_line` INT NULL COMMENT '方法申明结束行' , `fn_decl_end_column` INT NULL COMMENT '方法声明结束列' , `fn_start_line` INT NULL COMMENT '方法开始行' , `fn_start_column` INT NULL COMMENT '方法开始列' , `fn_end_line` INT NULL COMMENT '方法结束行' , `fn_end_column` INT NULL COMMENT '方法结束列' , `coverage_times` INT NULL COMMENT '覆盖次数' , `fn_line` INT NULL COMMENT '方法所在行' , `update_time` DATETIME NULL COMMENT '更新时间' , `is_deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否删除' , PRIMARY KEY (`id`)) COMMENT = '方法覆盖率数据' ; |
CREATE TABLE `totoro_range`.`range_coverage_js_branch` ( `id` INT NOT NULL AUTO_INCREMENT, `file_id` INT NULL COMMENT '对应js_file的表的文件id' , `branch_index` VARCHAR (45) NULL COMMENT '分支索引编号' , `branch_start_line` INT NULL COMMENT '分支开始行' , `branch_start_column` INT NULL COMMENT '分支开列行' , `branch_end_line` INT NULL COMMENT '分支结束行' , `branch_end_column` INT NULL COMMENT '分支结束行' , `type` VARCHAR (45) NULL COMMENT '分支类型' , `branch_lie` INT NULL COMMENT '分支所在行' , `update_time` DATETIME NULL COMMENT '更新时间' , `is_deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否删除' , PRIMARY KEY (`id`)) COMMENT = '分支覆盖率数据' ; |
CREATE TABLE `totoro_range`.`range_coverage_js_branch_locations` ( `id` INT NOT NULL AUTO_INCREMENT, `branch_id` INT NULL COMMENT '对应js_branch分支id' , `sub_branch_location_index` INT NULL COMMENT '子分支坐标索引编号' , `sub_branch_start_line` INT NULL COMMENT '子分支开始行' , `sub_branch_start_column` INT NULL COMMENT '子分支开始列' , `sub_branch_end_line` INT NULL COMMENT '子分支结束行' , `sub_branch_end_column` INT NULL COMMENT '子分支结束列' , `coverage_times` INT NULL COMMENT '子分支覆盖次数' , `update_time` DATETIME NULL COMMENT '更新时间' , `is_deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否删除' , PRIMARY KEY (`id`)) COMMENT = '子分支覆盖数据' ; |
查询某个js文件行覆盖率语句:
select * from range_coverage_js_statement where file_id =(select id from range_coverage_js_file where app_name =' ' and commit_id = ' ' )
方法覆盖率 :
select * from range_coverage_js_fn where file_id =(select id from range_coverage_js_file where app_name =' ' and commit_id = ' ' )
分支覆盖率:
select * from range_coverage_js_branch_locations where branch_id = ( select id from range_coverage_js_branch where file_id =(select id from range_coverage_js_file where app_name =' ' and commit_id = ' ' ) )
这篇关于数据拆解入库(暂时未拆解)---H5精准测试服务端接口及数据库表设计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!