Sha256: e7b9b7ef935c341ba68316e10d3021ea9947ec44e6fe7e12de121fba1602635c

Contents?: true

Size: 957 Bytes

Versions: 7

Compression:

Stored size: 957 Bytes

Contents

# frozen_string_literal: true

module GraphQL
  module Stitching
    class Composer::ValidateInterfaces < Composer::BaseValidator

      def perform(supergraph, composer)
        # @todo
        # Validate all supergraph interface fields
        # match possible types in all locations...
        # - Traverse supergraph types (supergraph.types)
        # - For each interface (.kind.interface?), get possible types (Util.get_possible_types)
        # - For each possible type, traverse type candidates (composer.subschema_types_by_name_and_location)
        # - For each type candidate, compare interface fields to type candidate fields
        # - For each type candidate field that matches an interface field...
        #   - Named types must match
        #   - List structures must match
        #   - Nullabilities must be >= interface field
        # - It's OKAY if a type candidate does not implement the full interface
      end

    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
graphql-stitching-0.3.1 lib/graphql/stitching/composer/validate_interfaces.rb
graphql-stitching-0.3.0 lib/graphql/stitching/composer/validate_interfaces.rb
graphql-stitching-0.2.3 lib/graphql/stitching/composer/validate_interfaces.rb
graphql-stitching-0.2.2 lib/graphql/stitching/composer/validate_interfaces.rb
graphql-stitching-0.2.1 lib/graphql/stitching/composer/validate_interfaces.rb
graphql-stitching-0.1.0 lib/graphql/stitching/composer/validate_interfaces.rb
graphql-stitching-0.0.1 lib/graphql/stitching/composer/validate_interfaces.rb