class GraphQL::Schema::Printer
Used to convert your {GraphQL::Schema} to a GraphQL
schema string
@example print your schema to standard output (via helper)
MySchema = GraphQL::Schema.define(query: QueryType) puts GraphQL::Schema::Printer.print_schema(MySchema)
@example print your schema to standard output
MySchema = GraphQL::Schema.define(query: QueryType) puts GraphQL::Schema::Printer.new(MySchema).print_schema
@example print a single type to standard output
query_root = GraphQL::ObjectType.define do name "Query" description "The query root of this schema" field :post do type post_type resolve ->(obj, args, ctx) { Post.find(args["id"]) } end end post_type = GraphQL::ObjectType.define do name "Post" description "A blog post" field :id, !types.ID field :title, !types.String field :body, !types.String end MySchema = GraphQL::Schema.define(query: query_root) printer = GraphQL::Schema::Printer.new(MySchema) puts printer.print_type(post_type)
Attributes
schema[R]
warden[R]
Public Class Methods
new(schema, context: nil, only: nil, except: nil, introspection: false)
click to toggle source
@param schema [GraphQL::Schema] @param context [Hash] @param only [<#call(member, ctx)>] @param except [<#call(member, ctx)>] @param introspection [Boolean] Should include the introspection types in the string?
# File lib/graphql/schema/printer.rb, line 47 def initialize(schema, context: nil, only: nil, except: nil, introspection: false) @document_from_schema = GraphQL::Language::DocumentFromSchemaDefinition.new( schema, context: context, only: only, except: except, include_introspection_types: introspection, ) @document = @document_from_schema.document @schema = schema end
print_introspection_schema()
click to toggle source
Return the GraphQL
schema string for the introspection type system
# File lib/graphql/schema/printer.rb, line 62 def self.print_introspection_schema query_root = ObjectType.define(name: "Root") schema = GraphQL::Schema.define(query: query_root) introspection_schema_ast = GraphQL::Language::DocumentFromSchemaDefinition.new( schema, except: ->(member, _) { member.name == "Root" }, include_introspection_types: true, include_built_in_directives: true, ).document introspection_schema_ast.to_query_string(printer: IntrospectionPrinter.new) end
print_schema(schema, **args)
click to toggle source
Return a GraphQL
schema string for the defined types in the schema @param schema [GraphQL::Schema] @param context [Hash] @param only [<#call(member, ctx)>] @param except [<#call(member, ctx)>]
# File lib/graphql/schema/printer.rb, line 81 def self.print_schema(schema, **args) printer = new(schema, **args) printer.print_schema end
Public Instance Methods
print_directive(directive)
click to toggle source
Calls superclass method
GraphQL::Language::Printer#print_directive
# File lib/graphql/schema/printer.rb, line 96 def print_directive(directive) if directive.name == "deprecated" reason = directive.arguments.find { |arg| arg.name == "reason" } if reason.value == GraphQL::Directive::DEFAULT_DEPRECATION_REASON "@deprecated" else "@deprecated(reason: #{reason.value.to_s.inspect})" end else super end end
print_schema()
click to toggle source
Return a GraphQL
schema string for the defined types in the schema
# File lib/graphql/schema/printer.rb, line 87 def print_schema print(@document) end
print_type(type)
click to toggle source
# File lib/graphql/schema/printer.rb, line 91 def print_type(type) node = @document_from_schema.build_type_definition_node(type) print(node) end