- 订阅接口前置后置钩子支持
- Rest数据源支持上传接口解析成graphql
- Rest数据源支持additionalProperties解析成Map
- 添加指令@whereInput用于注入参数构造查询条件
- Proxy钩子支持上传/下载功能
- Graphql跨源关联添加_join_mutation用于跨源变更操作
- 添加支持多数据源事务管理(仅数据库类型)
- 实现opentracing链路追踪并接入Prisma实现接口和SQL可观测的链路(jaegertracing/all-in-one:latest)
- 指令@Skip和@include添加参数ifRule使用表达式跳过或包含selection
- 指令@export可以导出任何非空字段为true值参数
- 添加指令@injectRuleValue用于注入参数可替换前置钩子功能
- 新增接口并发控制,允许通过设置tickets和timeout来控制接口的同时请求数量
- 添加queryRaw配合指令@customizedField实现返回字段自动补全功能,支持数组字段
- 调整包含依赖@export导出值的参数的selection执行顺序,跨源关联现在将自动保证执行顺序
- 实现Prisma引擎查询/内省部分错误的汉化功能,支持嵌套错误
- 添加optional_queryRaw实现SQL片段可选的查询
&{}
直接替换, ${}
参数占位符
- JSON类型入参可以直接传递JSON对象,无需再使用JSON.stringify()
- 新增指令@skipVariable用于自定义规则跳过参数,例如当A参数为空时跳过B参数
- 支持不带前端资源的精简部署,下载命令行添加--without-web参数,镜像末尾添加_without-web
- 指令@injectCurrentDateTime新增toUnix用于注入当前时间戳,offset新增format用于偏移后重新格式化时间
- 新增指令@firstRawResult用于获取RawQuery查询结果中的第一个元素,实现totalCount功能
- 修改JSON返回值不再是JSON字符串,而是JSON对象,方便前端使用,同时也支持@export指令导出JSON字段
- 添加支持手动管理事务函数
- 添加调用上传接口,支持多文件上传
- 优化自定义数据源内省结果比较,解决重复更新内省文件问题
- 新增生成time.time和geometry(Postgres)字段类型
- 添加支持根据struct构建Graphql的Args和Type
- 解决MutatingPreResolve钩子丢失零值入参问题
- 解决time.Time零值入参未被清除的问题
- 新增 Graphql 内置解析指令 @transform,替换原有根据 jsonpath 从根节点替换的功能
- 全局 operation 和单个 operation 通过 graphqlTransformEnabled 切换新旧解析逻辑
- Web 页面 Mock 执行 Graphql 新增按钮用于查看 @transform 指令解析后的数据
- 端口 9123 新增接口 /api/storageClient/{dataName}/presignUpload 返回带签名认证的上传地址,用于前端直接上传文件
- 新增指令 @asyncResolve 用于并行解析数组 selectionField,当数据量大时效果明显
- 指令 @jsonschema 支持 format 和 enum 用于修改参数的类型,和指令 @hookVariable 结合更佳
- 指令 @transform 新增参数 math(SUM/AVG/MAX/MIN/COUNT/FIRST/LAST)用于对数组元素进行计算,SUM/AVG/MAX/MIN 仅支持数字,FIRST 常用于取首个元素,针对一对多查询但只需取首个元素时使用
- 指令 @customizedField 可以作用于 JSON 字段,实现自定义字段的返回值
- query_raw 和 optional_query_raw 查询默认均解析成数组,可以通过 @firstRawResult 改变内省且取首个元素(计算 total 时常用)
- 解决 Prisma Error P2024 错误未正确翻译的问题
- 解决读取超长文件行错误的问题(当 schema definitions 非常大时出现)
- 解决 Prisma 数据源为空时未能生成内省文件的问题(因为翻译错误内容但原有判断逻辑未修改导致)
- Web 页面 Graphql Mock 预览数据时,修复以下被错误清除的 Variable/Selection, 指令 @hookVariable 修饰参数但参数有被 Graphql 使用,指令 @customizedField 修饰 Selection 但字段存在定义中
- 现在可以使用相同字段来实现关联查询/统计并通过别名区分,举例如下(Identity和_count.Card分别是关联查询和关联统计,并且通过别名实现不同条件下的数据返回):
query($username: String!) {
findManyUser(where: {username: {equals: $username}}) {
id
username
nickname
createdAt
header: Identity(take: 1, where: {type: {equals: header}}) {id}
member: Identity(take: 1, where: {type: {equals: member}}) {id}
enabledCardCount: _count @transform(get: "enabled") {
enabled: Card(where: {enabled: {equals: true}})
}
disabledCardCount: _count @transform(get: "disabled") {
disabled: Card(where: {enabled: {equals: false}})
}
}
}
- 添加operation历史控制,开发模式可以无感切换接口版本
- Query 引擎执行超时以及引擎关闭超时配置提取到环境变量中(默认10s和30s)
- 简化 optional_queryRaw 的使用,使用字符串代替对象,同时变量占位符使用$name,模板占位符使用${name}
- 重写 prisma schema engine 调用逻辑,针对不同方法提供范型约束输入输出