Class: Valkyrie::Persistence::Solr::Queries::FindByIdQuery

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

Overview

Responsible for returning a single resource identified by an ID.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(id, connection:, resource_factory:) ⇒ FindByIdQuery

Returns a new instance of FindByIdQuery.



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

def initialize(id, connection:, resource_factory:)
  @id = id
  @connection = connection
  @resource_factory = resource_factory
end

Instance Attribute Details

#connectionObject (readonly)

Returns the value of attribute connection.



5
6
7
# File 'lib/valkyrie/persistence/solr/queries/find_by_id_query.rb', line 5

def connection
  @connection
end

#idObject



18
19
20
# File 'lib/valkyrie/persistence/solr/queries/find_by_id_query.rb', line 18

def id
  @id.to_s
end

#resource_factoryObject (readonly)

Returns the value of attribute resource_factory.



5
6
7
# File 'lib/valkyrie/persistence/solr/queries/find_by_id_query.rb', line 5

def resource_factory
  @resource_factory
end

Instance Method Details

#resourceObject



22
23
24
# File 'lib/valkyrie/persistence/solr/queries/find_by_id_query.rb', line 22

def resource
  connection.get("select", params: { q: "id:\"#{id}\"", fl: "*", rows: 1 })["response"]["docs"].first
end

#runObject



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

def run
  raise ::Valkyrie::Persistence::ObjectNotFoundError unless resource
  resource_factory.to_resource(object: resource)
end