Sha256: d511456a6dae558ad12ea19ec1f0b9b200be96d6d1d0b43a0786439bc4e2d4d3

Contents?: true

Size: 708 Bytes

Versions: 7

Compression:

Stored size: 708 Bytes

Contents

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

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

    def id
      @id.to_s
    end

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

Version data entries

7 entries across 7 versions & 1 rubygems

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