Sha256: 0c308c8ef767b6f2ce1c8b8c5a20c4a872be4ea91b4547f63ba567ba1f1cf418

Contents?: true

Size: 1.18 KB

Versions: 16

Compression:

Stored size: 1.18 KB

Contents

# frozen_string_literal: true

module Spotlight
  # Mixin for retrieving solr documents for a specific exhibit
  module ExhibitDocuments
    ##
    # Retrieve all the solr documents associated with this exhibit, appropriately
    # filtered by the exhibit-specific solr field.
    #
    # @return [Enumerable<SolrDocument>]
    def solr_documents(&)
      return to_enum(:solr_documents) unless block_given?

      start = 0
      search_params = exhibit_search_builder.merge(q: '*:*', fl: '*')

      response = repository.search(search_params.start(start).to_h)

      while response.documents.present?
        response.documents.each(&)
        start += response.documents.length
        response = repository.search(search_params.start(start).to_h)
      end
    end

    def exhibit_search_builder
      blacklight_config.search_builder_class.new(exhibit_search_builder_context).except(:apply_permissive_visibility_filter)
    end

    private

    def exhibit_search_builder_context
      OpenStruct.new(blacklight_config: blacklight_config.tap { |x| x.current_exhibit = self })
    end

    def repository
      @repository ||= Blacklight.repository_class.new(blacklight_config)
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
blacklight-spotlight-5.0.0.pre.alpha3 app/models/concerns/spotlight/exhibit_documents.rb
blacklight-spotlight-5.0.0.pre.alpha2 app/models/concerns/spotlight/exhibit_documents.rb
blacklight-spotlight-5.0.0.pre.alpha1 app/models/concerns/spotlight/exhibit_documents.rb
blacklight-spotlight-4.7.1 app/models/concerns/spotlight/exhibit_documents.rb
blacklight-spotlight-4.7.0 app/models/concerns/spotlight/exhibit_documents.rb
blacklight-spotlight-4.6.1 app/models/concerns/spotlight/exhibit_documents.rb
blacklight-spotlight-4.6.0 app/models/concerns/spotlight/exhibit_documents.rb
blacklight-spotlight-4.5.0 app/models/concerns/spotlight/exhibit_documents.rb
blacklight-spotlight-4.4.0 app/models/concerns/spotlight/exhibit_documents.rb
blacklight-spotlight-4.3.6 app/models/concerns/spotlight/exhibit_documents.rb
blacklight-spotlight-4.3.5 app/models/concerns/spotlight/exhibit_documents.rb
blacklight-spotlight-4.3.4 app/models/concerns/spotlight/exhibit_documents.rb
blacklight-spotlight-4.3.3 app/models/concerns/spotlight/exhibit_documents.rb
blacklight-spotlight-4.3.2 app/models/concerns/spotlight/exhibit_documents.rb
blacklight-spotlight-4.3.1 app/models/concerns/spotlight/exhibit_documents.rb
blacklight-spotlight-4.3.0 app/models/concerns/spotlight/exhibit_documents.rb