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
clone
Shallow copy of the object, suitable for reblessing without affecting the original object.
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.