module ArSerializer::GraphQL
Public Class Methods
_definition(klass)
click to toggle source
# 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)
click to toggle source
# File lib/ar_serializer/graphql.rb, line 5 def self.definition(klass, use: nil) ArSerializer::Serializer.with_namespaces(use) { _definition klass } end
serialize(schema, gql_query, operation_name: nil, variables: {}, **args)
click to toggle source
# 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