Sha256: 0daa212c4dba08feeca32d2bee4df907342b5c0cbdd50e1633371346c22d5549

Contents?: true

Size: 990 Bytes

Versions: 1

Compression:

Stored size: 990 Bytes

Contents

# A collection of types which implement the same fields
#
# @example An interface with three required fields
#   DeviceInterface = GraphQL::InterfaceType.define do
#     name("Device")
#     description("Hardware devices for computing")
#
#     field :ram, types.String
#     field :processor, ProcessorType
#     field :release_year, types.Int
#   end
#
class GraphQL::InterfaceType < GraphQL::BaseType
  include GraphQL::BaseType::HasPossibleTypes
  defined_by_config :name, :description, :fields, :resolve_type
  attr_accessor :name, :description, :fields

  def kind
    GraphQL::TypeKinds::INTERFACE
  end

  # @return [Array<GraphQL::ObjectType>] Types which declare that they implement this interface
  def possible_types
    @possible_types ||= []
  end

  # @return [GraphQL::Field] The defined field for `field_name`
  def get_field(field_name)
    fields[field_name]
  end

  # @return [Array<GraphQL::Field>] All fields on this type
  def all_fields
    fields.values
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
graphql-0.11.1 lib/graphql/interface_type.rb