Sha256: dd77ba683b36bada9824dbe2cf690c274f4254bad77c7494c1eea28d02f224af

Contents?: true

Size: 1.75 KB

Versions: 6

Compression:

Stored size: 1.75 KB

Contents

# frozen_string_literal: true
module GraphQL
  module Types
    module Relay
      # A class-based definition for Relay edges.
      #
      # Use this as a parent class in your app, or use it as inspiration for your
      # own base `Edge` class.
      #
      # For example, you may want to extend your own `BaseObject` instead of the
      # built-in `GraphQL::Schema::Object`.
      #
      # @example Making a UserEdge type
      #   # Make a base class for your app
      #   class Types::BaseEdge < GraphQL::Types::Relay::BaseEdge
      #   end
      #
      #   # Then extend your own base class
      #   class Types::UserEdge < Types::BaseEdge
      #     node_type(Types::User)
      #   end
      #
      # @see {Relay::BaseConnection} for connection types
      class BaseEdge < Types::Relay::BaseObject
        description "An edge in a connection."

        class << self
          # Get or set the Object type that this edge wraps.
          #
          # @param node_type [Class] A `Schema::Object` subclass
          # @param null [Boolean]
          def node_type(node_type = nil, null: true)
            if node_type
              @node_type = node_type
              # Add a default `node` field
              field :node, node_type, null: null, description: "The item at the end of the edge.",
                connection: false
            end
            @node_type
          end

          def authorized?(obj, ctx)
            true
          end

          def accessible?(ctx)
            node_type.accessible?(ctx)
          end

          def visible?(ctx)
            node_type.visible?(ctx)
          end
        end


        field :cursor, String,
          null: false,
          description: "A cursor for use in pagination."
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
graphql-1.11.12 lib/graphql/types/relay/base_edge.rb
graphql-1.11.11 lib/graphql/types/relay/base_edge.rb
graphql-1.11.10 lib/graphql/types/relay/base_edge.rb
graphql-1.11.9 lib/graphql/types/relay/base_edge.rb
graphql-1.11.8 lib/graphql/types/relay/base_edge.rb
graphql-1.11.7 lib/graphql/types/relay/base_edge.rb