Sha256: a0d5da9741e65fc926f8e6c175bca1f8c76244a3be53d4eb25a258211af7db63
Contents?: true
Size: 1.42 KB
Versions: 2
Compression:
Stored size: 1.42 KB
Contents
class GraphQL::Schema DIRECTIVES = [GraphQL::SkipDirective, GraphQL::IncludeDirective] attr_reader :query, :mutation, :directives, :static_validator def initialize(query:, mutation:) # Add fields to this query root for introspection: query.fields = query.fields.merge({ "__type" => GraphQL::Field.new do |f, type, field, arg| f.description("A type in the GraphQL system") f.arguments({name: arg.build(type: !type.String)}) f.type(!GraphQL::Introspection::TypeType) f.resolve -> (o, a, c) { self.types[a["name"]] } end, "__schema" => GraphQL::Field.new do |f| f.description("This GraphQL schema") f.type(!GraphQL::Introspection::SchemaType) f.resolve -> (o, a, c) { self } end }) @query = query @mutation = mutation @directives = DIRECTIVES.reduce({}) { |m, d| m[d.name] = d; m } @static_validator = GraphQL::StaticValidation::Validator.new(schema: self) errors = SchemaValidator.new.validate(self) if errors.any? raise("Schema is invalid: \n#{errors.join("\n")}") end end def types @types ||= TypeReducer.new(query, {}).result end end require 'graph_ql/schema/each_item_validator' require 'graph_ql/schema/field_validator' require 'graph_ql/schema/implementation_validator' require 'graph_ql/schema/schema_validator' require 'graph_ql/schema/type_reducer' require 'graph_ql/schema/type_validator'
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
graphql-0.3.0 | lib/graph_ql/schema.rb |
graphql-0.2.0 | lib/graph_ql/schema.rb |