Module: ArSerializer::GraphQL
- Defined in:
- lib/ar_serializer/graphql.rb,
lib/ar_serializer/graphql/types.rb
Defined Under Namespace
Classes: ArgClass, FieldClass, HashTypeClass, ListTypeClass, OptionalTypeClass, OrTypeClass, Parser, ScalarTypeClass, SchemaClass, SerializableTypeClass, TypeClass
Class Method Summary
collapse
Class Method Details
._definition(klass) ⇒ Object
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
# File 'lib/ar_serializer/graphql.rb', line 9
def self._definition(klass)
schema = SchemaClass.new(klass)
definitions = schema.types.map do |type|
next "scalar #{type.name}" if type.is_a? ScalarTypeClass
fields = type.fields.map do |field|
args = field.args.map { |arg| "#{arg.name}: #{arg.type.gql_type}" }
args_exp = "(#{args.join(', ')})" unless args.empty?
" #{field.name}#{args_exp}: #{field.type.gql_type}"
end
<<~TYPE
type #{type.name} {
#{fields.join("\n")}
}
TYPE
end
<<~SCHEMA
schema {
query: #{schema.query_type.name}
}
#{definitions.map(&:strip).join("\n\n")}
SCHEMA
end
|
.definition(klass, use: nil) ⇒ Object
.serialize(schema, gql_query, operation_name: nil, variables: {}, **args) ⇒ Object
33
34
35
36
37
38
39
40
|
# File 'lib/ar_serializer/graphql.rb', line 33
def self.serialize(schema, gql_query, operation_name: nil, variables: {}, **args)
query = ArSerializer::GraphQL::Parser.parse(
gql_query,
operation_name: operation_name,
variables: variables
)
{ data: ArSerializer::Serializer.serialize(schema, query, **args) }
end
|