venom-generator
Version:
In the way of code generation, complete the storage model->computation model (business API) transformation to achieve the goal of design and implementation
194 lines (120 loc) • 5.71 kB
Markdown
# venom-generator
以代码生成的方式,完成存储模型->计算模型(业务 API)转换,实现设计即实现的目标
## 参数
- server:服务名称[可省略] 默认为 pservice 项目名
- output:文件输出地址[可省略] 默认输出到./src/generated 文件夹下
- yml:prisma.yml 文件路径[可省略] 默认从./prisma 读取文件 如果指定 'yml' 参数,未找到文件时再次从./prisma 读取文件
- dev:开发调试 默认为 false ,true 可查看模型指令相关参数值
## 形式
- 配置文件
- 存放根目录[src 同级]
- 文件名[.vgeneratorrc]:开发所需配置文件名必须与文件名一致,否则不读取
- 命令行
## 使用
- 无'.vgeneratorrc'文件使用方法
```bash
npx venom-generator --server account --output ./src/generated --yml ./prisma
```
- 有'.vgeneratorrc'文件使用方法
```bash
npx venom-generator
```
## 模型文件指令说明
###
- 是否需要依赖公共服务 poclicy 指令
- value:公共服务名称
### /QueryResolve(description: "方法描述", type: "类型", args: "参数",list:true/false)
- 用于公开的自定义方法指令
- description:方法描述(所有指令参数都是如此)
- type:方法返回类型
- args:方法参数(所有指令参数都是如此)
- 格式:key:value
- '!':参数类型若有'!'符号,则表示该参数必传(如:"id:String!"表示 id 必传)
- 可以为 prisma 基本数据类型[Boolean,DateTime,Float,ID,Int,String],也可以为 prisma 复杂对象
- list:是否返回为数组。默认 false
- 指令用法
- 若参数为 prisma 基本数据类型[Boolean,DateTime,Float,ID,Int,String],则 key 可定义,value 定义为[Boolean,DateTime,Float,ID,Int,String]
- 若参数为复杂对象,需查询唯一则 key 定义为 where,value 定义为需查询的复杂对象
- 若参数为复杂对象,需查询列表则 key 定义为 wheres,value 定义为需查询的复杂对象
- 若参数为复杂对象,需分组或排序查询则 key 定义为 orderBy,value 定义为需查询的复杂对象
- 指令用法
- 若参数为 prisma 基本数据类型[Boolean,DateTime,Float,ID,Int,String],则 key 可定义,value 定义为[Boolean,DateTime,Float,ID,Int,String]
- 若参数为复杂对象且为新增,key 定义为 data,value 定义为需新增的复杂对象拼接 Create
- 若参数为复杂对象且为更新,修改数据 key 定义为 data,value 定义为需更新的复杂对象拼接 Update,若条件也为复杂对象且根据唯一条件更新则 key 定义为 where,value 定义为需更新条件的复杂对象,若条件也为复杂对象且根据任意条件更新则 key 定义为 wheres,value 定义为需更新条件的复杂对象
- 若参数为复杂对象且为删除,若条件也为复杂对象且根据唯一条件删除则 key 定义为 where,value 定义为需更新条件的复杂对象,若条件也为复杂对象且根据任意条件删除则 key 定义为 wheres,value 定义为需更新条件的复杂对象
###
- 查询单条数据方法指令
- args:默认"id:String!"
###
- 查询多条数据方法指令
###
- 增删改方法指令
- create: ture/false 是否需要新增数据方法。 默认 false
- update: ture/false 是否需要修改数据方法。 默认 false
- delete: ture/false 是否需要删除数据方法。 默认 false
###
- 当前方法是否需要检查相关权限指令
- aud:当前方法是否检查数据拥有者
###
- 暴露 api 字段过滤
- Query:true/false 数据查询是否需要过滤该字段。 默认 false
- Mutation:true/false 数据增删改是否需要过滤该字段。 默认 false
## 例子
- 需要依赖公共服务
```graphql
enum Test {
Version
Description
}
```
- 用于公开的自定义字段[Mutationxxx]
```graphql
enum Test {
Test
}
```
```graphql
enum Test {
Test
}
```
```graphql
enum Test {
Test
}
```
````graphql
enum Test {
Test
}
```graphql
enum Test {
Test
}
````
- 单条数据查询且需要检查权限
```graphql
type Test {
id: Id!
}
```
- 多条数据查询且无需检查权限
```graphql
type Test {
id: Id!
}
```
- 增删改且需要检查权限
```graphql
type Test {
id: Id!
}
```
- 字段过滤
```graphql
type Test {
id: ID
userName: String
passWord: String
}
```