NAME
GraphQL::Type - GraphQL type object
SYNOPSIS
extends qw(GraphQL::Type);
DESCRIPTION
Superclass for other GraphQL type classes to inherit from.
ENCODING
Those Perl classes each implement a GraphQL type. Each item of GraphQL data has a GraphQL type. Such an item of data can also be represented within Perl. Objects of that Perl class take responsibility for translating between the Perl representation and the "GraphQL representation". A "GraphQL representation" means something JSON-encodeable: an "object" (in Perl terms, a hash), an array (Perl: array-reference), string, number, boolean, or null.
See "METHODS" for generic methods to translate back and forth between these worlds.
Code that you provide to do this translation must return things that can be JSON-encoded, not things that have been so encoded: this means, among other things, do not surround strings in "
, and for boolean values, use the mechanism in JSON::MaybeXS: JSON-
true> etc.
SUBCLASSES
These subclasses implement part of the GraphQL language specification. Objects of these classes implement user-defined types used to implement a GraphQL API.
- GraphQL::Type::Enum
- GraphQL::Type::InputObject
- GraphQL::Type::Interface
- GraphQL::Type::List
- GraphQL::Type::NonNull
- GraphQL::Type::Object
- GraphQL::Type::Scalar - also implements example types such as
String
- GraphQL::Type::Union
ROLES
These roles implement part of the GraphQL language specification. They are applied to objects of GraphQL::Type classes, either to facilitate type constrants, or as noted below.
- GraphQL::Role::FieldsInput - provides
fields
attribute for an input type - GraphQL::Role::FieldsOutput - provides
fields
attribute for an output type - GraphQL::Role::Abstract - abstract type
- GraphQL::Role::Composite - type has fields
- GraphQL::Role::Input - type can be an input
- GraphQL::Role::Leaf - simple type - enum or scalar
- GraphQL::Role::Listable - can be list-wrapped; provides convenience method
- GraphQL::Role::Named - has a
name
anddescription
, provided by this role - GraphQL::Role::Nullable - can be null-valued
- GraphQL::Role::Output - type can be an output
TYPE LIBRARY
GraphQL::Type::Library - implements various Type::Tiny type constraints, for use in Moo attributes, and Function::Parameters/Return::Type methods and functions.
METHODS
uplift
Turn given Perl entity into valid Perl value for this type if possible.
graphql_to_perl
Turn given GraphQL entity into Perl entity.
perl_to_graphql
Turn given Perl entity into GraphQL entity.
from_ast($name2type, $ast_node)
Class method. $name2type
is a hash-ref populated by "from_ast" in GraphQL::Schema. Takes a hash-ref node from an AST made by "parse" in GraphQL::Language::Parser. Returns a type object.
to_doc($doc)
Returns Schema Definition Language (SDL) document that describes this object.