Class: Valkyrie::Persistence::Solr::Queries::FindInverseReferencesQuery

Inherits:
Object
  • Object
show all
Defined in:
lib/valkyrie/persistence/solr/queries/find_inverse_references_query.rb

Overview

Responsible for efficiently returning all Resources which reference a Resource in a given property.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(resource:, property:, connection:, resource_factory:) ⇒ FindInverseReferencesQuery

Returns a new instance of FindInverseReferencesQuery.



7
8
9
10
11
12
# File 'lib/valkyrie/persistence/solr/queries/find_inverse_references_query.rb', line 7

def initialize(resource:, property:, connection:, resource_factory:)
  @resource = resource
  @property = property
  @connection = connection
  @resource_factory = resource_factory
end

Instance Attribute Details

#connectionObject (readonly)

Returns the value of attribute connection.



6
7
8
# File 'lib/valkyrie/persistence/solr/queries/find_inverse_references_query.rb', line 6

def connection
  @connection
end

#propertyObject (readonly)

Returns the value of attribute property.



6
7
8
# File 'lib/valkyrie/persistence/solr/queries/find_inverse_references_query.rb', line 6

def property
  @property
end

#resourceObject (readonly)

Returns the value of attribute resource.



6
7
8
# File 'lib/valkyrie/persistence/solr/queries/find_inverse_references_query.rb', line 6

def resource
  @resource
end

#resource_factoryObject (readonly)

Returns the value of attribute resource_factory.



6
7
8
# File 'lib/valkyrie/persistence/solr/queries/find_inverse_references_query.rb', line 6

def resource_factory
  @resource_factory
end

Instance Method Details

#eachObject



18
19
20
21
22
23
24
25
26
# File 'lib/valkyrie/persistence/solr/queries/find_inverse_references_query.rb', line 18

def each
  docs = DefaultPaginator.new
  while docs.has_next?
    docs = connection.paginate(docs.next_page, docs.per_page, "select", params: { q: query })["response"]["docs"]
    docs.each do |doc|
      yield resource_factory.to_resource(object: doc)
    end
  end
end

#queryObject



28
29
30
# File 'lib/valkyrie/persistence/solr/queries/find_inverse_references_query.rb', line 28

def query
  "#{property}_ssim:id-#{resource.id}"
end

#runObject



14
15
16
# File 'lib/valkyrie/persistence/solr/queries/find_inverse_references_query.rb', line 14

def run
  enum_for(:each)
end