Sha256: 34d174ee6d500f4b9067011a8704ffe08d68b72b4f470d090708cc884c2e72b5

Contents?: true

Size: 1.17 KB

Versions: 16

Compression:

Stored size: 1.17 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, 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-2.13.0 app/models/concerns/spotlight/exhibit_documents.rb
blacklight-spotlight-2.12.1 app/models/concerns/spotlight/exhibit_documents.rb
blacklight-spotlight-2.12.0 app/models/concerns/spotlight/exhibit_documents.rb
blacklight-spotlight-2.11.0 app/models/concerns/spotlight/exhibit_documents.rb
blacklight-spotlight-2.10.0 app/models/concerns/spotlight/exhibit_documents.rb
blacklight-spotlight-2.9.0 app/models/concerns/spotlight/exhibit_documents.rb
blacklight-spotlight-2.8.0 app/models/concerns/spotlight/exhibit_documents.rb
blacklight-spotlight-2.7.2 app/models/concerns/spotlight/exhibit_documents.rb
blacklight-spotlight-2.7.1 app/models/concerns/spotlight/exhibit_documents.rb
blacklight-spotlight-2.7.0 app/models/concerns/spotlight/exhibit_documents.rb
blacklight-spotlight-2.6.1.1 app/models/concerns/spotlight/exhibit_documents.rb
blacklight-spotlight-2.6.1 app/models/concerns/spotlight/exhibit_documents.rb
blacklight-spotlight-2.6.0 app/models/concerns/spotlight/exhibit_documents.rb
blacklight-spotlight-2.5.2 app/models/concerns/spotlight/exhibit_documents.rb
blacklight-spotlight-2.5.1 app/models/concerns/spotlight/exhibit_documents.rb
blacklight-spotlight-2.5.0 app/models/concerns/spotlight/exhibit_documents.rb