venom-generator v1.5.2
venom-generator
以代码生成的方式,完成存储模型->计算模型(业务 API)转换,实现设计即实现的目标
参数
server:服务名称可省略 默认为 pservice 项目名
output:文件输出地址可省略 默认输出到./src/generated 文件夹下
yml:prisma.yml 文件路径可省略 默认从./prisma 读取文件 如果指定 'yml' 参数,未找到文件时再次从./prisma 读取文件
dev:开发调试 默认为 false ,true 可查看模型指令相关参数值
形式
配置文件
存放根目录src 同级
文件名.vgeneratorrc:开发所需配置文件名必须与文件名一致,否则不读取
命令行
使用
- 无'.vgeneratorrc'文件使用方法
npx venom-generator --server account --output ./src/generated --yml ./prisma
- 有'.vgeneratorrc'文件使用方法
npx venom-generator
模型文件指令说明
@Include(value: "poclicy")
是否需要依赖公共服务 poclicy 指令
- value:公共服务名称
@Mutation/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
@QueryResolve 指令用法
若参数为 prisma 基本数据类型Boolean,DateTime,Float,ID,Int,String,则 key 可定义,value 定义为Boolean,DateTime,Float,ID,Int,String
若参数为复杂对象,需查询唯一则 key 定义为 where,value 定义为需查询的复杂对象
若参数为复杂对象,需查询列表则 key 定义为 wheres,value 定义为需查询的复杂对象
若参数为复杂对象,需分组或排序查询则 key 定义为 orderBy,value 定义为需查询的复杂对象
@MutationResolve 指令用法
若参数为 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 定义为需更新条件的复杂对象
@QueryUnique(description: "方法描述", args: "参数")
查询单条数据方法指令
- args:默认"id:String!"
@Query(description: "方法描述", args: "参数")
- 查询多条数据方法指令
@Mutation(description: "方法描述", create: true, update: true, delete: true, args: "参数")
增删改方法指令
create: ture/false 是否需要新增数据方法。 默认 false
update: ture/false 是否需要修改数据方法。 默认 false
delete: ture/false 是否需要删除数据方法。 默认 false
@CalcAuthorization(aud: "数据拥有者")
当前方法是否需要检查相关权限指令
- aud:当前方法是否检查数据拥有者
@Filter(Query: true, Mutation: true)
暴露 api 字段过滤
Query:true/false 数据查询是否需要过滤该字段。 默认 false
Mutation:true/false 数据增删改是否需要过滤该字段。 默认 false
例子
- 需要依赖公共服务
enum Test @Include(value: "poclicy") {
Version @Version(value: "1.0.0")
Description @Description(value: "测试")
}
- 用于公开的自定义字段Mutationxxx
enum Test @MutationResolve(description: "测试方法", type: "String", args: "userName:String!,password:String!") {
Test
}
enum Test @MutationResolve(description: "新增数据", type: "Test", args: "data:TestCreate!") {
Test
}
enum Test @MutationResolve(description: "根据唯一条件更新数据", type: "Test", args: "data:TestUpdate!,where:Test!") {
Test
}
enum Test @MutationResolve(description: "根据任意条件更新数据", type: "Test", args: "data:TestUpdate!,wheres:Test!") {
Test
}
```graphql
enum Test @MutationResolve(description: "根据任意条件删除数据", type: "Test", args: "wheres:Test!") {
Test
}
- 单条数据查询且需要检查权限
type Test @QueryUnique(description: "测试方法", args: "id:String!") @CalcAuthorization(aud: "id") {
id: Id! @id
}
- 多条数据查询且无需检查权限
type Test @Query(description: "测试方法", args: "where:Test,orderBy:Test") {
id: Id! @id
}
- 增删改且需要检查权限
type Test @Mutation(description: "测试方法", create: true, update: true, delete: true, args: "where:Test!") @CalcAuthorization {
id: Id! @id
}
- 字段过滤
type Test {
id: ID @id
userName: String
passWord: String @Filter(Query: true, Mutation: true)
}
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago