infinityloop-dev / graphpinator-query-cost
通过限制最大深度或节点数来限制查询成本的模块。
1.2
2023-11-10 15:31 UTC
Requires
Requires (Dev)
- infection/infection: ^0.27
- infinityloop-dev/coding-standard: ^0.2
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^10.4
README
⚡🌐⚡ 通过限制最大深度或节点数来限制查询成本的模块。
简介
安装
使用 composer 安装包
composer require infinityloop-dev/graphpinator-query-cost
如何使用
此包包含两个模块。它们可以一起使用或单独使用。
MaxDepthModule
验证查询的最大深度。MaxNodesModule
验证查询的大小不超过最大节点数。- 一个节点本质上是需要解析的单个值。
- 此模块自动识别“乘数”参数,例如
limit
,它会乘以该字段的内部节点数。- 默认的乘数参数是
['limit', 'first', 'last']
,但可以使用第二个构造函数参数进行更改。 - 如果您想禁用此功能,请将构造函数参数设置为空数组。
- 默认的乘数参数是
- 将选定的模块注册到 GraPHPinator
$depthModule = new \Graphpinator\QueryCost\MaxDepthModule( 10, // selected maximum depth ); $nodesModule = new \Graphpinator\QueryCost\MaxNodesModule( 10000, // selected number of nodes ['limit'], // optional: multiplier argument names ); $graphpinator = new \Graphpinator\Graphpinator( $schema, $catchExceptions, new \Graphpinator\Module\ModuleSet([$depthModule, $nodesModule /* possibly other modules */]), $logger, );
- 一切准备就绪,查询将验证最大深度/最大节点数。