logo
Free, Micro AI Code Reviews That Run on Git Commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, Micro AI Code Reviews That Run on Git Commit | Product Hunt git-lrc - Free, Micro AI Code Reviews That Run on Git Commit | Product Hunt

GraphQL::Plugin::Type - GraphQL plugins implementing types

Description

       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.

Methods

register($graphql_type)
       When called with a GraphQL::Type subclass, will register it, otherwise dies.

   registered
       Returns a list of registered classes.

perl v5.34.0                                       2022-03-27                         GraphQL::Plugin::Type(3pm)

Name

       GraphQL::Plugin::Type - GraphQL plugins implementing types

Synopsis

         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,
           );
         };

See Also