Sha256: a891f3e64aadfa2151041a6c5a6de0b33fddad5a057cb4d05b69046116d876ac

Contents?: true

Size: 870 Bytes

Versions: 4

Compression:

Stored size: 870 Bytes

Contents

# frozen_string_literal: true
module Valkyrie::Persistence::Solr::Queries
  # Responsible for returning a single resource identified by an ID.
  class FindByAlternateIdentifierQuery
    attr_reader :connection, :resource_factory
    attr_writer :alternate_identifier
    def initialize(alternate_identifier, connection:, resource_factory:)
      @alternate_identifier = alternate_identifier
      @connection = connection
      @resource_factory = resource_factory
    end

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

    def alternate_identifier
      @alternate_identifier.to_s
    end

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

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
valkyrie-1.2.0.rc1 lib/valkyrie/persistence/solr/queries/find_by_alternate_identifier_query.rb
valkyrie-1.1.2 lib/valkyrie/persistence/solr/queries/find_by_alternate_identifier_query.rb
valkyrie-1.1.1 lib/valkyrie/persistence/solr/queries/find_by_alternate_identifier_query.rb
valkyrie-1.1.0 lib/valkyrie/persistence/solr/queries/find_by_alternate_identifier_query.rb