GraphQL::Plugin::Type - GraphQL plugins implementing types
package GraphQL::Plugin::Type::DateTime; use Moo; extends qw(GraphQL::Plugin::Type); my $iso8601 = DateTime::Format::ISO8601->new; GraphQL::Plugin::Type->register( GraphQL::Type::Scalar->new( name => 'DateTime', serialize => sub { return if !defined $_[0]; $_[0].'' }, parse_value => sub { return if !defined $_[0]; $iso8601->parse_datetime(@_); }, ) ); 1; package main; use GraphQL::Schema; use GraphQL::Plugin::Type::DateTime; use GraphQL::Execution qw(execute); my $schema = GraphQL::Schema->from_doc(<<'EOF'); type Query { dateTimeNow: DateTime } EOF post '/graphql' => sub { send_as JSON => execute( $schema, body_parameters->{query}, { dateTimeNow => sub { DateTime->now } }, undef, body_parameters->{variables}, body_parameters->{operationName}, undef, ); };
Class implementing the scheme by which additional GraphQL type classes can be implemented.
The author considers this is only worth doing for scalars, and indeed this scheme is (now) how the non-standard DateTime is implemented in graphql-perl. If one wants to create other types (GraphQL::Type::Object, GraphQL::Type::InputObject, etc), then the Schema Definition Language is already available. However, any type can be registered with the "register" method, and will be automatically available to GraphQL::Schema objects with no additional code.
DateTime
When called with a GraphQL::Type subclass, will register it, otherwise dies.
Returns a list of registered classes.
To install GraphQL, copy and paste the appropriate command in to your terminal.
cpanm
cpanm GraphQL
CPAN shell
perl -MCPAN -e shell install GraphQL
For more information on module installation, please visit the detailed CPAN module installation guide.