line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
package GraphQL::Plugin::Convert; |
2
|
|
|
|
|
|
|
|
3
|
1
|
|
|
1
|
|
635
|
use Moo; |
|
1
|
|
|
|
|
3
|
|
|
1
|
|
|
|
|
5
|
|
4
|
1
|
|
|
1
|
|
319
|
use strict; |
|
1
|
|
|
|
|
3
|
|
|
1
|
|
|
|
|
18
|
|
5
|
1
|
|
|
1
|
|
4
|
use warnings; |
|
1
|
|
|
|
|
4
|
|
|
1
|
|
|
|
|
56
|
|
6
|
|
|
|
|
|
|
|
7
|
|
|
|
|
|
|
=head1 NAME |
8
|
|
|
|
|
|
|
|
9
|
|
|
|
|
|
|
GraphQL::Plugin::Convert - GraphQL plugin API abstract class |
10
|
|
|
|
|
|
|
|
11
|
|
|
|
|
|
|
=head1 SYNOPSIS |
12
|
|
|
|
|
|
|
|
13
|
|
|
|
|
|
|
package GraphQL::Plugin::Convert::DBIC; |
14
|
|
|
|
|
|
|
use Moo; |
15
|
|
|
|
|
|
|
extends qw(GraphQL::Plugin::Convert); |
16
|
|
|
|
|
|
|
# ... |
17
|
|
|
|
|
|
|
|
18
|
|
|
|
|
|
|
package main; |
19
|
|
|
|
|
|
|
use Mojolicious::Lite; |
20
|
|
|
|
|
|
|
use Schema; |
21
|
|
|
|
|
|
|
use GraphQL::Plugin::Convert::DBIC; |
22
|
|
|
|
|
|
|
helper db => sub { Schema->connect('dbi:SQLite:test.db') }; |
23
|
|
|
|
|
|
|
my $converted = GraphQL::Plugin::Convert::DBIC->to_graphql(sub { app->db }); |
24
|
|
|
|
|
|
|
plugin GraphQL => { |
25
|
|
|
|
|
|
|
map { $_ => $converted->{$_} } |
26
|
|
|
|
|
|
|
qw(schema resolver root_value subscribe_resolver) |
27
|
|
|
|
|
|
|
}; |
28
|
|
|
|
|
|
|
|
29
|
|
|
|
|
|
|
# OR, for knowledgeable consumers of GraphQL::Plugin::Convert APIs: |
30
|
|
|
|
|
|
|
package main; |
31
|
|
|
|
|
|
|
use Mojolicious::Lite; |
32
|
|
|
|
|
|
|
use Schema; |
33
|
|
|
|
|
|
|
helper db => sub { Schema->connect('dbi:SQLite:test.db') }; |
34
|
|
|
|
|
|
|
plugin GraphQL => { convert => [ 'DBIC', sub { app->db } ] }; |
35
|
|
|
|
|
|
|
|
36
|
|
|
|
|
|
|
=head1 DESCRIPTION |
37
|
|
|
|
|
|
|
|
38
|
|
|
|
|
|
|
Abstract class for other GraphQL type classes to inherit from and |
39
|
|
|
|
|
|
|
implement. |
40
|
|
|
|
|
|
|
|
41
|
|
|
|
|
|
|
=head1 METHODS |
42
|
|
|
|
|
|
|
|
43
|
|
|
|
|
|
|
=head2 to_graphql(@values) |
44
|
|
|
|
|
|
|
|
45
|
|
|
|
|
|
|
When called with suitable values (as defined by the implementing class), |
46
|
|
|
|
|
|
|
will return a hash-ref with these keys: |
47
|
|
|
|
|
|
|
|
48
|
|
|
|
|
|
|
=over |
49
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
=item schema |
51
|
|
|
|
|
|
|
|
52
|
|
|
|
|
|
|
A L<GraphQL::Schema>. |
53
|
|
|
|
|
|
|
|
54
|
|
|
|
|
|
|
=item resolver |
55
|
|
|
|
|
|
|
|
56
|
|
|
|
|
|
|
A code-ref suitable for using as a resolver by |
57
|
|
|
|
|
|
|
L<GraphQL::Execution/execute>. Optional. |
58
|
|
|
|
|
|
|
|
59
|
|
|
|
|
|
|
=item root_value |
60
|
|
|
|
|
|
|
|
61
|
|
|
|
|
|
|
A hash-ref suitable for using as a C<$root_value> by |
62
|
|
|
|
|
|
|
L<GraphQL::Execution/execute>. Optional. |
63
|
|
|
|
|
|
|
|
64
|
|
|
|
|
|
|
=item subscribe_resolver |
65
|
|
|
|
|
|
|
|
66
|
|
|
|
|
|
|
A code-ref suitable for using as a C<$subscribe_resolver> by |
67
|
|
|
|
|
|
|
L<GraphQL::Subscription/subscribe>. Optional. |
68
|
|
|
|
|
|
|
|
69
|
|
|
|
|
|
|
=back |
70
|
|
|
|
|
|
|
|
71
|
|
|
|
|
|
|
=head2 from_graphql |
72
|
|
|
|
|
|
|
|
73
|
|
|
|
|
|
|
When called with a hash-ref shaped as above, with at least a C<schema> |
74
|
|
|
|
|
|
|
key with a L<GraphQL::Schema>, returns some value(s). Optional to |
75
|
|
|
|
|
|
|
implement. If the plugin does implement this, allows conversion from |
76
|
|
|
|
|
|
|
a GraphQL schema to that plugin's domain. |
77
|
|
|
|
|
|
|
|
78
|
|
|
|
|
|
|
=cut |
79
|
|
|
|
|
|
|
|
80
|
|
|
|
|
|
|
__PACKAGE__->meta->make_immutable(); |
81
|
|
|
|
|
|
|
|
82
|
|
|
|
|
|
|
1; |