GraphQL::Plugin::Convert - GraphQL plugin API abstract class
package GraphQL::Plugin::Convert::DBIC;
use Moo;
extends qw(GraphQL::Plugin::Convert);
# ...
package main;
use Mojolicious::Lite;
use Schema;
use GraphQL::Plugin::Convert::DBIC;
helper db => sub { Schema->connect('dbi:SQLite:test.db') };
my $converted = GraphQL::Plugin::Convert::DBIC->to_graphql(sub { app->db });
plugin GraphQL => {
map { $_ => $converted->{$_} }
qw(schema resolver root_value subscribe_resolver)
};
# OR, for knowledgeable consumers of GraphQL::Plugin::Convert APIs:
package main;
use Mojolicious::Lite;
use Schema;
helper db => sub { Schema->connect('dbi:SQLite:test.db') };
plugin GraphQL => { convert => [ 'DBIC', sub { app->db } ] };
Abstract class for other GraphQL type classes to inherit from and implement.
When called with suitable values (as defined by the implementing class), will
return a hash-ref with these keys:
- schema
- A GraphQL::Schema.
- resolver
- A code-ref suitable for using as a resolver by "execute" in
GraphQL::Execution. Optional.
- root_value
- A hash-ref suitable for using as a $root_value by
"execute" in GraphQL::Execution. Optional.
- subscribe_resolver
- A code-ref suitable for using as a
$subscribe_resolver by "subscribe" in
GraphQL::Subscription. Optional.
When called with a hash-ref shaped as above, with at least a
"schema" key with a GraphQL::Schema, returns
some value(s). Optional to implement. If the plugin does implement this,
allows conversion from a GraphQL schema to that plugin's domain.