Sha256: 78d89275dfe77b3466743a9e1871dd9c91f3dfe61e0c5aeeca42fd5768026ad3

Contents?: true

Size: 771 Bytes

Versions: 5

Compression:

Stored size: 771 Bytes

Contents

class GraphQL::Models::Middleware
  attr_accessor :skip_nil_models

  def initialize(skip_nil_models = true)
    @skip_nil_models = skip_nil_models
  end

  def call(graphql_type, object, field_definition, args, context)
    # If this field defines a path, load the associations in the path
    field_info = GraphQL::Models.field_info(graphql_type, field_definition.name)
    return yield unless field_info

    # Convert the core object into the model
    base_model = field_info.object_to_base_model.call(object)

    GraphQL::Models.load_association(base_model, field_info.path, context).then do |model|
      next nil if model.nil? && @skip_nil_models

      next_args = [graphql_type, model, field_definition, args, context]
      yield(next_args)
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
graphql-activerecord-0.10.0 lib/graphql/models/middleware.rb
graphql-activerecord-0.10.0.pre.alpha3 lib/graphql/models/middleware.rb
graphql-activerecord-0.10.0.pre.alpha2 lib/graphql/models/middleware.rb
graphql-activerecord-0.10.0.pre.alpha1 lib/graphql/models/middleware.rb
graphql-activerecord-0.9.1 lib/graphql/models/middleware.rb