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 and description, 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.