Sha256: 5d6f8c1832134a6f44a16222a7ea471d6139d7b3f06c37ab3175c58eaa5ad389

Contents?: true

Size: 1.08 KB

Versions: 8

Compression:

Stored size: 1.08 KB

Contents

# frozen_string_literal: true
module GraphQL
  module Relay
    # A connection implementation to expose MongoDB collection objects.
    # It works for:
    # - `Mongoid::Criteria`
    class MongoRelationConnection < RelationConnection
      private

      def relation_offset(relation)
        relation.options.skip
      end

      def relation_limit(relation)
        relation.options.limit
      end

      def relation_count(relation)
        # Must perform query (hence #to_a) to count results https://jira.mongodb.org/browse/MONGOID-2325
        relation.to_a.count
      end

      def limit_nodes(sliced_nodes, limit)
        if limit == 0
          if sliced_nodes.respond_to?(:none) # added in Mongoid 4.0
            sliced_nodes.without_options.none
          else
            sliced_nodes.where(id: nil) # trying to simulate #none for 3.1.7
          end
        else
          sliced_nodes.limit(limit)
        end
      end
    end

    if defined?(Mongoid::Criteria)
      BaseConnection.register_connection_implementation(Mongoid::Criteria, MongoRelationConnection)
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
graphql-1.8.6 lib/graphql/relay/mongo_relation_connection.rb
graphql-1.8.5 lib/graphql/relay/mongo_relation_connection.rb
graphql-1.8.4 lib/graphql/relay/mongo_relation_connection.rb
graphql-1.8.3 lib/graphql/relay/mongo_relation_connection.rb
graphql-1.8.2 lib/graphql/relay/mongo_relation_connection.rb
graphql-1.8.1 lib/graphql/relay/mongo_relation_connection.rb
graphql-1.8.0 lib/graphql/relay/mongo_relation_connection.rb
graphql-1.8.0.pre11 lib/graphql/relay/mongo_relation_connection.rb