Skip to content

Commit 98ea0b9

Browse files
committed
Simplify extending of fields definition
1 parent 23e5570 commit 98ea0b9

File tree

3 files changed

+34
-5
lines changed

3 files changed

+34
-5
lines changed

src/Config/Parser/GraphQL/ASTConverter/FieldsNode.php

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
namespace Overblog\GraphQLBundle\Config\Parser\GraphQL\ASTConverter;
66

7+
use GraphQL\Language\AST\FieldDefinitionNode;
8+
use GraphQL\Language\AST\InputValueDefinitionNode;
79
use GraphQL\Language\AST\Node;
810
use GraphQL\Utils\AST;
911

@@ -17,7 +19,7 @@ public static function toConfig(Node $node, string $property = 'fields'): array
1719
$fieldConfig = TypeNode::toConfig($definition) + DescriptionNode::toConfig($definition);
1820

1921
if (!empty($definition->arguments)) {
20-
$fieldConfig['args'] = self::toConfig($definition, 'arguments');
22+
$fieldConfig['args'] = static::toConfig($definition, 'arguments');
2123
}
2224

2325
if (!empty($definition->defaultValue)) {
@@ -29,10 +31,21 @@ public static function toConfig(Node $node, string $property = 'fields'): array
2931
$fieldConfig['deprecationReason'] = $directiveConfig['deprecationReason'];
3032
}
3133

32-
$config[$definition->name->value] = $fieldConfig;
34+
$config[$definition->name->value] = static::extendFieldConfig($fieldConfig, $definition);
3335
}
3436
}
3537

3638
return $config;
3739
}
40+
41+
/**
42+
* @param array<string,mixed> $fieldConfig
43+
* @param FieldDefinitionNode|InputValueDefinitionNode $fieldDefinition
44+
*
45+
* @return array<string,mixed>
46+
*/
47+
protected static function extendFieldConfig(array $fieldConfig, Node $fieldDefinition): array
48+
{
49+
return $fieldConfig;
50+
}
3851
}

src/Config/Parser/GraphQL/ASTConverter/ObjectNode.php

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,7 @@ public static function toConfig(Node $node): array
3232
*/
3333
protected static function parseConfig(Node $node): array
3434
{
35-
$config = DescriptionNode::toConfig($node) + [
36-
'fields' => FieldsNode::toConfig($node),
37-
];
35+
$config = DescriptionNode::toConfig($node) + static::parseFields($node);
3836

3937
if (!empty($node->interfaces)) {
4038
$interfaces = [];
@@ -46,4 +44,14 @@ protected static function parseConfig(Node $node): array
4644

4745
return $config;
4846
}
47+
48+
/**
49+
* @return array{fields: array<string,mixed> }
50+
*/
51+
protected static function parseFields(Node $node): array
52+
{
53+
return [
54+
'fields' => FieldsNode::toConfig($node),
55+
];
56+
}
4957
}

src/Config/TypeWithOutputFieldsDefinition.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ protected function outputFieldsSection(): NodeDefinition
1717

1818
$node->isRequired()->requiresAtLeastOneElement();
1919

20+
/** @var ArrayNodeDefinition $prototype */
2021
$prototype = $node->useAttributeAsKey('name', false)->prototype('array');
2122

2223
/** @phpstan-ignore-next-line */
@@ -84,6 +85,8 @@ protected function outputFieldsSection(): NodeDefinition
8485
->end()
8586
->end();
8687

88+
$this->extendFieldPrototype($prototype);
89+
8790
return $node;
8891
}
8992

@@ -101,4 +104,9 @@ protected function fieldsBuilderSection(): ArrayNodeDefinition
101104

102105
return $node;
103106
}
107+
108+
protected function extendFieldPrototype(ArrayNodeDefinition $prototype): void
109+
{
110+
111+
}
104112
}

0 commit comments

Comments
 (0)