1.0.3 • Published 4 years ago
sofa-database-helper v1.0.3
数据库选型
mysql
优点
- mysql对大量数据的操作更加稳定,速度更快
- mysql对事务支持友好(虽然不确定我们是否需要使用事务)
- mysql占用空间小,在大数据量时不需要考虑内存问题
- 目前公司内部使用mysql,使用其他的可能会有额外的成本
缺点
- 数据库表字段扩展成本高,所以建议设计预留字段
其他
为了提升运行速度,之后可以考虑采用 redis + mysql 的方式
- redis (https://github.com/NodeRedis/node_redis)
- sequelize (https://github.com/sequelize/sequelize)
数据库对外接口
具体接口参数和返回值参见http://gitlab.sftcwl.com/sftc-fe/sofa/wikis/home
*接口全部以promise形式返回(除了getPoolConnection建立数据库连接以外)
例如添加模板
addTemplate(templateConfig).then((response) => {console.log(response)});
数据库操作相关
内容 | 说明 |
---|---|
checkDbConnect | 测试数据库连接状态 |
getPoolConnection | 连接数据库 |
模板相关
内容 | 说明 |
---|---|
addTemplate | 保存模板信息 |
getTemplates | 获取全部模板 |
getTemplatesByName | 根据模板名称获取模板数据(模板姓名是否存在、模板查询、模板姓名sug) |
setTemplate | 更新模板(更新模板版本号等) |
setTemplateStatusById | 删除模板(更新模板status) |
setTemplateApproveStatusById | 更改模板审批状态(管理员通过发布者发布的模板) |
日志相关
内容 | 说明 |
---|---|
addLog | 添加日志 |
getLogs | 获取日志 |
实例相关
内容 | 说明 |
---|---|
addInstance | 添加实例 |
getInstances | 获取实例 |
getInstancesByTemplateId | 获取模板下的全部实例 |
用户相关
内容 | 说明 |
---|---|
addUser | 添加用户(在用户发布模板、创建实例时记录用户信息和权限) |
updateUser | 更新用户 |
getUsers | 获取用户 |
数据库表设计
模板表 template
功能:记录模板的配置信息
字段名 | 类型 | 说明 | 实例/default | 允许空值 |
---|---|---|---|---|
id | int | 唯一标识符,自增 | 1 | 否 |
name | varchar(50) | 模板名称,英文命名,推荐全小写,使用中划线连字符;唯一; | react-project-template | 否 |
type | varchar(20) | 模板类型(可选值:project、module、component、micro) | project | 否 |
frame | varchar(20) | 使用的前端框架,目前有vue、react、react-native、mp、h5 | vue | 否 |
isTs | tinyint(1) | 是否使用了typescript做为开发语言 | 1 / 0 | 否 |
isBlank | tinyint(1) | 用于区分开发模板和应用,true是模板 | 1 / 0 | 否 |
parentId | int | 父级id,部分模板需要指定的父级使用环境,比如module | 2 | 是 |
description | text | 模板介绍,具体功能,适用场景等; | react最佳实践 | 否 |
path | varchar(255) | 模板存储位置 | http://gitlab.sftcwl.com/sftc-fe/react-project-template | 否 |
version | varchar(10) | 当前版本,每次更新模板,自动打tag,简单管理版本号,三位自增版本号,从末位版本号开始,自增到9,向上进一位; | 0.0.9 | 否 |
status | tinyint(4) | 模板状态(发布者)1:有效,2:无效 | 1 | 否 |
approveStatus | tinyint(4) | 模板审核状态(管理员)1:有效,2:无效 | 2 | 否 |
publisher | varchar(50) | 发布人信息,会在发布时,获取Git登录信息,此处为Git账号信息; | yxlichun@126.com | 否 |
publishTime | timestamp | 发布时间 | 1559133464 | 否 |
modifyTime | timestamp | 修改时间 | 1559133464 | 是 |
plugins | json | 将当前文件、config等以参数的形式提供给插件,以进行一些后期的特殊处理; | 是 |
实例表 instance
功能:记录实例的配置信息,用于进行代码管控;记录用户的每次代码生成、更新、移除操作;
字段名 | 类型 | 说明 | 实例/default | 允许空值 |
---|---|---|---|---|
id | int | 唯一标识符 | 1 | 否 |
name | varchar(50) | 代码块名称,项目名称、模块名称、组件名称等等; | sf-print | 否 |
type | varchar(20) | 实际是与template的type一致; | component | 否 |
templateId | int | 模板id | vue | 否 |
operator | varchar(50) | 操作人Git信息 | yxlichun@126.com | 否 |
config | json | 用户输入的交互信息 | {“name”: “ddd”} | 否 |
status | tinyint(4) | 1:有效,2:无效 | 1 | 否 |
parentId | int (id) | 项目归属,记录的是当前生成的代码片段被应用于哪个实际项目 | 2 | 否 |
createTime | timestamp | 发布时间 | 1559133464 | 否 |
modifyTime | timestamp | 修改时间 | 1559133464 | 是 |
日志表 log
功能:记录用户的每次命令操作
字段名 | 类型 | 说明 | 实例/default | 允许空值 |
---|---|---|---|---|
id | int | 唯一标识符, 自增 | 1 | 否 |
command | varchar(50) | 用户命令 | Sofa create module | 否 |
operator | varchar(50) | 操作人Git信息 | yxlichun@126.com | 否 |
config | json | 用户输入的交互信息 | {“name”: “ddd”,“template”: “vue-module”,} | 否 |
operateTime | timestamp | 发布时间 | 1559133464 | 否 |
用户表 user
功能:记录用户信息
字段名 | 类型 | 说明 | 实例/default | 允许空值 |
---|---|---|---|---|
id | int | 唯一标识符 | 1 | 否 |
name | varchar(50) | git用户名 | yxlichun@126.com | 否 |
auth | tinyint(4) | 用户权限(1:超管 2:发布者 3:普通用户) | 1 | 否 |