Sha256: aaf9c79de030c5fedf2a7b680f8aa481192ff0f171520a0922c2a467843d84f8

Contents?: true

Size: 1.19 KB

Versions: 14

Compression:

Stored size: 1.19 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 { |x| yield x }
        start += response.documents.length
        response = repository.search(search_params.start(start).to_h)
      end
    end

    private

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

    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

14 entries across 14 versions & 1 rubygems

Version Path
blacklight-spotlight-3.0.0.rc4 app/models/concerns/spotlight/exhibit_documents.rb
blacklight-spotlight-3.0.0.rc3 app/models/concerns/spotlight/exhibit_documents.rb
blacklight-spotlight-3.0.0.rc2 app/models/concerns/spotlight/exhibit_documents.rb
blacklight-spotlight-3.0.0.rc1 app/models/concerns/spotlight/exhibit_documents.rb
blacklight-spotlight-3.0.0.alpha.10 app/models/concerns/spotlight/exhibit_documents.rb
blacklight-spotlight-3.0.0.alpha.9 app/models/concerns/spotlight/exhibit_documents.rb
blacklight-spotlight-3.0.0.alpha.8 app/models/concerns/spotlight/exhibit_documents.rb
blacklight-spotlight-3.0.0.alpha.7 app/models/concerns/spotlight/exhibit_documents.rb
blacklight-spotlight-3.0.0.alpha.6 app/models/concerns/spotlight/exhibit_documents.rb
blacklight-spotlight-3.0.0.alpha.5 app/models/concerns/spotlight/exhibit_documents.rb
blacklight-spotlight-3.0.0.alpha.4 app/models/concerns/spotlight/exhibit_documents.rb
blacklight-spotlight-3.0.0.alpha.3 app/models/concerns/spotlight/exhibit_documents.rb
blacklight-spotlight-3.0.0.alpha.2 app/models/concerns/spotlight/exhibit_documents.rb
blacklight-spotlight-3.0.0.alpha.1 app/models/concerns/spotlight/exhibit_documents.rb