sofa-database-helper
v1.0.3
Published
sofa database
Downloads
59
Readme
数据库选型
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账号信息;| [email protected] | 否 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信息 | [email protected] | 否 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信息 | [email protected] | 否 config | json | 用户输入的交互信息 | {“name”: “ddd”,“template”: “vue-module”,} | 否 operateTime | timestamp | 发布时间 | 1559133464 | 否
用户表 user
功能:记录用户信息
字段名 | 类型 | 说明 | 实例/default | 允许空值 ---|---|---|---|--- id | int | 唯一标识符 | 1 | 否 name | varchar(50) | git用户名 | [email protected] | 否 auth | tinyint(4) | 用户权限(1:超管 2:发布者 3:普通用户) | 1 | 否