Sha256: 2a6f3f2d9e4934a5b6ef755e466d832e8bfbe8315f01b4b2286be204aa3f75e5
Contents?: true
Size: 1.39 KB
Versions: 2
Compression:
Stored size: 1.39 KB
Contents
class GraphQL::DefinitionHelpers::DefinedByConfig::DefinitionConfig # Wraps a field definition with a ConnectionField # - applies default fields # - wraps the resolve proc to make a connection # def connection(name, type = nil, desc = nil, property: nil, &block) # Wrap the given block to define the default args definition_block = -> (config) { argument :first, types.Int argument :after, types.String argument :last, types.Int argument :before, types.String argument :order, types.String self.instance_eval(&block) } connection_field = field(name, type, desc, property: property, &definition_block) # Wrap the defined resolve proc # TODO: make a public API on GraphQL::Field to expose this proc original_resolve = connection_field.instance_variable_get(:@resolve_proc) connection_resolve = -> (obj, args, ctx) { items = original_resolve.call(obj, args, ctx) connection_class = GraphQL::Relay::BaseConnection.connection_for_items(items) connection_class.new(items, args) } connection_field.resolve = connection_resolve fields[name.to_s] = connection_field end alias :return_field :field alias :return_fields :fields def global_id_field(field_name) name || raise("You must define the type's name before creating a GlobalIdField") field(name, field: GraphQL::Relay::GlobalIdField.new(name)) end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
graphql-relay-0.3.5 | lib/graphql/relay/monkey_patches/definition_config.rb |
graphql-relay-0.3.4 | lib/graphql/definition_helpers/defined_by_config/definition_config.rb |