Sha256: cc9f705ecf4acfcfac88a80cfa4abf91fddd8ba0cf3382a6b23b7f1b9259a3b2

Contents?: true

Size: 846 Bytes

Versions: 39

Compression:

Stored size: 846 Bytes

Contents

module GraphitiGql
  class Schema
    class PolymorphicBelongsToInterface
      def initialize(resource, sideload)
        @resource = resource
        @sideload = sideload
      end

      def build
        return registry[name][:type] if registry[name]

        klass = Module.new
        klass.send :include, ResourceType::BaseInterface
        klass.field :id, String, null: false
        klass.field :_type, String, null: false
        klass.graphql_name(name)
        @sideload.children.values.each do |child|
          registry.get(child.resource.class)[:type].implements(klass)
        end
        registry[name] = { type: klass }
        registry[name]
      end

      private

      def registry
        Registry.instance
      end

      def name
        "#{registry.key_for(@resource)}__#{@sideload.name}"
      end
    end
  end
end

Version data entries

39 entries across 39 versions & 1 rubygems

Version Path
graphiti_gql-0.2.38 lib/graphiti_gql/schema/polymorphic_belongs_to_interface.rb
graphiti_gql-0.2.37 lib/graphiti_gql/schema/polymorphic_belongs_to_interface.rb
graphiti_gql-0.2.36 lib/graphiti_gql/schema/polymorphic_belongs_to_interface.rb
graphiti_gql-0.2.35 lib/graphiti_gql/schema/polymorphic_belongs_to_interface.rb
graphiti_gql-0.2.34 lib/graphiti_gql/schema/polymorphic_belongs_to_interface.rb
graphiti_gql-0.2.33 lib/graphiti_gql/schema/polymorphic_belongs_to_interface.rb
graphiti_gql-0.2.32 lib/graphiti_gql/schema/polymorphic_belongs_to_interface.rb
graphiti_gql-0.2.31 lib/graphiti_gql/schema/polymorphic_belongs_to_interface.rb
graphiti_gql-0.2.30 lib/graphiti_gql/schema/polymorphic_belongs_to_interface.rb
graphiti_gql-0.2.29 lib/graphiti_gql/schema/polymorphic_belongs_to_interface.rb
graphiti_gql-0.2.28 lib/graphiti_gql/schema/polymorphic_belongs_to_interface.rb
graphiti_gql-0.2.27 lib/graphiti_gql/schema/polymorphic_belongs_to_interface.rb
graphiti_gql-0.2.26 lib/graphiti_gql/schema/polymorphic_belongs_to_interface.rb
graphiti_gql-0.2.25 lib/graphiti_gql/schema/polymorphic_belongs_to_interface.rb
graphiti_gql-0.2.24 lib/graphiti_gql/schema/polymorphic_belongs_to_interface.rb
graphiti_gql-0.2.23 lib/graphiti_gql/schema/polymorphic_belongs_to_interface.rb
graphiti_gql-0.2.22 lib/graphiti_gql/schema/polymorphic_belongs_to_interface.rb
graphiti_gql-0.2.21 lib/graphiti_gql/schema/polymorphic_belongs_to_interface.rb
graphiti_gql-0.2.20 lib/graphiti_gql/schema/polymorphic_belongs_to_interface.rb
graphiti_gql-0.2.19 lib/graphiti_gql/schema/polymorphic_belongs_to_interface.rb