npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

sofa-database-helper

v1.0.3

Published

sofa database

Downloads

59

Readme

数据库选型

mysql

优点

  1. mysql对大量数据的操作更加稳定,速度更快
  2. mysql对事务支持友好(虽然不确定我们是否需要使用事务)
  3. mysql占用空间小,在大数据量时不需要考虑内存问题
  4. 目前公司内部使用mysql,使用其他的可能会有额外的成本

缺点

  1. 数据库表字段扩展成本高,所以建议设计预留字段

其他

为了提升运行速度,之后可以考虑采用 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 | 否