Sha256: 6a226a07fdcf558e3f1b9106bcb7db034446b814b543e395d1d146c0c58f8d0f

Contents?: true

Size: 1.31 KB

Versions: 8

Compression:

Stored size: 1.31 KB

Contents

# frozen_string_literal: true
module GraphQL
  module Models
    class RelationLoadRequest
      attr_reader :relation

      def initialize(relation)
        @relation = relation
      end

      ####################################################################
      # Public members that all load requests should implement
      ####################################################################

      def load_type
        :relation
      end

      def load_target
        relation
      end

      # If the value should be an array, make sure it's an array. If it should be a single value, make sure it's single.
      # Passed in result could be a single model or an array of models.
      def ensure_cardinality(result)
        Array.wrap(result)
      end

      # When the request is fulfilled, this method is called so that it can do whatever caching, etc. is needed
      def fulfilled(result); end

      def load
        loader.load(self)
      end

      #################################################################
      # Public members specific to a relation load request
      #################################################################

      def target_class
        relation.klass
      end

      private

      def loader
        @loader ||= RelationLoader.for(target_class)
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
graphql-activerecord-0.12.6 lib/graphql/models/relation_load_request.rb
graphql-activerecord-0.12.5 lib/graphql/models/relation_load_request.rb
graphql-activerecord-0.12.4 lib/graphql/models/relation_load_request.rb
graphql-activerecord-0.12.3 lib/graphql/models/relation_load_request.rb
graphql-activerecord-0.12.2 lib/graphql/models/relation_load_request.rb
graphql-activerecord-0.12.1 lib/graphql/models/relation_load_request.rb
graphql-activerecord-0.12.0 lib/graphql/models/relation_load_request.rb
graphql-activerecord-0.11.0 lib/graphql/models/relation_load_request.rb