ORM CLI WIP
orm-cli
命令是用于帮助 orm 开发者进行测试开发的 CLI 工具.
前置要求
- fibjs >= 0.33.0
快速开始
npm i -g @fxjs/orm-cli
使得 orm
命令在全局生效, 然后使用 orm --help
查看可用的命令:
# todo: add sample
所有的子命令文档也可以通过 --help
查看, 比如 orm init-db --help
不会真的执行命令, 而是打印出该命令的帮助信息:
# todo: add sample
universal 命令
upgrade
orm upgrade
检查并升级 orm cli 到最新版.
dumpModel
orm dumpModel <modelDefine>.js
dumpModel 会打印数据库信息, 该过程中会把「用户定义的 model」和「从实际数据库抽象的 model」之间的 diff 也写入为 patch 文件.
<modelDefine>.js
被预期导出一个方法, 该方法中应使用 ORM 连接某个数据库, 并定义一些数据模型. 根据 ORM 属性定义规范, dumpModel 过程中会对数据库中每个表 table 尝试建模, 得到一些属性定义 dataStoreProperties
, 同时用户定义的所有属性记为 userDefinedProperties
.
一个参考的 <modelDefine>.js
文件如下:
const modelConfig = {
// "connection": "mysql://root@127.0.0.1/test",
"connection": "sqlite:./tmp/dump-model.db",
}
/**
*
* @param {import('@fxjs/orm/typings/ORM').ORMInstance} db
* @param {import('@fxjs/orm')} ORM
*/
module.exports = (ORM) => {
const db = ORM.connect(modelConfig.connection)
db.define('user', {
name: {
type: 'text',
},
age: {
type: 'integer',
default: 18,
size: 4
}
});
return {
orm: db,
};
};
假设该文件路径为 /path_to/model-define.js
, 则 dumpModel 会完成如下工作:
- 从数据库中读取信息, 包括表结构, 字段类型, 字段名称等等, 生成
/path_to/model-define-dump.json
文件, 包含表结构信息. - 生成一个
/path_to/properties-for-t-[user].patch
文件, 表示dataStoreProperties
和userDefinedProperties
的差异
在执行完 dumpModel 后 这些信息会被保存到 <modelDefine>.js
同目录下的 <modelDefine>-dump.json
文件中.
选项
--sync
: 是否将用户定义的 model 同步到数据库表结构中.--no-alphabet
: 禁用在 patch 时将每个 property 定义按字母顺序排序.