mirror of
https://github.com/retailcrm/graphql-php.git
synced 2025-02-06 07:49:24 +03:00
Moved typeFromAST() to AST util
This commit is contained in:
parent
a50c9a4c1f
commit
b4d767bad6
@ -8,8 +8,12 @@ use GraphQL\Language\AST\EnumValueNode;
|
|||||||
use GraphQL\Language\AST\FieldNode;
|
use GraphQL\Language\AST\FieldNode;
|
||||||
use GraphQL\Language\AST\FloatValueNode;
|
use GraphQL\Language\AST\FloatValueNode;
|
||||||
use GraphQL\Language\AST\IntValueNode;
|
use GraphQL\Language\AST\IntValueNode;
|
||||||
|
use GraphQL\Language\AST\ListTypeNode;
|
||||||
use GraphQL\Language\AST\ListValueNode;
|
use GraphQL\Language\AST\ListValueNode;
|
||||||
|
use GraphQL\Language\AST\NamedTypeNode;
|
||||||
use GraphQL\Language\AST\NameNode;
|
use GraphQL\Language\AST\NameNode;
|
||||||
|
use GraphQL\Language\AST\Node;
|
||||||
|
use GraphQL\Language\AST\NonNullTypeNode;
|
||||||
use GraphQL\Language\AST\NullValueNode;
|
use GraphQL\Language\AST\NullValueNode;
|
||||||
use GraphQL\Language\AST\ObjectFieldNode;
|
use GraphQL\Language\AST\ObjectFieldNode;
|
||||||
use GraphQL\Language\AST\ObjectValueNode;
|
use GraphQL\Language\AST\ObjectValueNode;
|
||||||
@ -24,6 +28,8 @@ use GraphQL\Type\Definition\InputType;
|
|||||||
use GraphQL\Type\Definition\LeafType;
|
use GraphQL\Type\Definition\LeafType;
|
||||||
use GraphQL\Type\Definition\ListOfType;
|
use GraphQL\Type\Definition\ListOfType;
|
||||||
use GraphQL\Type\Definition\NonNull;
|
use GraphQL\Type\Definition\NonNull;
|
||||||
|
use GraphQL\Type\Definition\Type;
|
||||||
|
use GraphQL\Type\Schema;
|
||||||
use GraphQL\Utils\Utils;
|
use GraphQL\Utils\Utils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -321,6 +327,26 @@ class AST
|
|||||||
throw new InvariantViolation('Must be input type');
|
throw new InvariantViolation('Must be input type');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
* @param NamedTypeNode|ListTypeNode|NonNullTypeNode $inputTypeNode
|
||||||
|
* @return Type
|
||||||
|
* @throws InvariantViolation
|
||||||
|
*/
|
||||||
|
public static function typeFromAST(Schema $schema, $inputTypeNode)
|
||||||
|
{
|
||||||
|
if ($inputTypeNode instanceof ListTypeNode) {
|
||||||
|
$innerType = self::typeFromAST($schema, $inputTypeNode->type);
|
||||||
|
return $innerType ? new ListOfType($innerType) : null;
|
||||||
|
}
|
||||||
|
if ($inputTypeNode instanceof NonNullTypeNode) {
|
||||||
|
$innerType = self::typeFromAST($schema, $inputTypeNode->type);
|
||||||
|
return $innerType ? new NonNull($innerType) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
Utils::invariant($inputTypeNode && $inputTypeNode instanceof NamedTypeNode, 'Must be a named type');
|
||||||
|
return $schema->getType($inputTypeNode->name->value);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns true if the provided valueNode is a variable which is not defined
|
* Returns true if the provided valueNode is a variable which is not defined
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace GraphQL\Utils;
|
namespace GraphQL\Utils;
|
||||||
|
|
||||||
|
use GraphQL\Error\InvariantViolation;
|
||||||
use GraphQL\Error\Warning;
|
use GraphQL\Error\Warning;
|
||||||
use GraphQL\Language\AST\FieldNode;
|
use GraphQL\Language\AST\FieldNode;
|
||||||
use GraphQL\Language\AST\ListTypeNode;
|
use GraphQL\Language\AST\ListTypeNode;
|
||||||
@ -55,26 +56,15 @@ class TypeInfo
|
|||||||
return TypeComparators::doTypesOverlap($schema, $typeA, $typeB);
|
return TypeComparators::doTypesOverlap($schema, $typeA, $typeB);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Schema $schema
|
* @param Schema $schema
|
||||||
* @param $inputTypeAST
|
* @param NamedTypeNode|ListTypeNode|NonNullTypeNode $inputTypeNode
|
||||||
* @return Type
|
* @return Type
|
||||||
* @throws \Exception
|
* @throws InvariantViolation
|
||||||
*/
|
*/
|
||||||
public static function typeFromAST(Schema $schema, $inputTypeNode)
|
public static function typeFromAST(Schema $schema, $inputTypeNode)
|
||||||
{
|
{
|
||||||
if ($inputTypeNode instanceof ListTypeNode) {
|
return AST::typeFromAST($schema, $inputTypeNode);
|
||||||
$innerType = self::typeFromAST($schema, $inputTypeNode->type);
|
|
||||||
return $innerType ? new ListOfType($innerType) : null;
|
|
||||||
}
|
|
||||||
if ($inputTypeNode instanceof NonNullTypeNode) {
|
|
||||||
$innerType = self::typeFromAST($schema, $inputTypeNode->type);
|
|
||||||
return $innerType ? new NonNull($innerType) : null;
|
|
||||||
}
|
|
||||||
|
|
||||||
Utils::invariant($inputTypeNode && $inputTypeNode instanceof NamedTypeNode, 'Must be a named type');
|
|
||||||
return $schema->getType($inputTypeNode->name->value);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
x
Reference in New Issue
Block a user