Class: Valkyrie::Persistence::Solr::Queries::FindByAlternateIdentifierQuery

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

Overview

Responsible for returning a single resource identified by an ID.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(alternate_identifier, connection:, resource_factory:) ⇒ FindByAlternateIdentifierQuery

Returns a new instance of FindByAlternateIdentifierQuery.



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

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

Instance Attribute Details

#alternate_identifierObject



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

def alternate_identifier
  @alternate_identifier.to_s
end

#connectionObject (readonly)

Returns the value of attribute connection.



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

def connection
  @connection
end

#resource_factoryObject (readonly)

Returns the value of attribute resource_factory.



5
6
7
# File 'lib/valkyrie/persistence/solr/queries/find_by_alternate_identifier_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_alternate_identifier_query.rb', line 22

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

#runObject



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

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