Sha256: 502448338ca9ba227bb6fe6bb8765032dfd43737428de9de354a1f550c78cbe4

Contents?: true

Size: 1.5 KB

Versions: 46

Compression:

Stored size: 1.5 KB

Contents

# Search for possible works that user can edit and could be a work's child or parent.
class Hyrax::My::FindWorksSearchBuilder < Hyrax::My::SearchBuilder
  include Hyrax::FilterByType

  self.default_processor_chain += [:filter_on_title, :show_only_other_works, :show_only_works_not_child, :show_only_works_not_parent]

  # Excludes the id that is part of the params
  def initialize(context)
    super(context)
    # Without an id this class will produce an invalid query.
    @id = context.params[:id] || raise("missing required parameter: id")
    @q = context.params[:q]
  end

  def filter_on_title(solr_parameters)
    solr_parameters[:fq] ||= []
    solr_parameters[:fq] += [ActiveFedora::SolrQueryBuilder.construct_query(title_tesim: @q)]
  end

  def show_only_other_works(solr_parameters)
    solr_parameters[:fq] ||= []
    solr_parameters[:fq] += [
      "-" + ActiveFedora::SolrQueryBuilder.construct_query_for_ids([@id])
    ]
  end

  def show_only_works_not_child(solr_parameters)
    ids = ActiveFedora::SolrService.query("{!field f=id}#{@id}", fl: "member_ids_ssim", rows: 10_000).flat_map { |x| x.fetch("member_ids_ssim", []) }
    solr_parameters[:fq] ||= []
    solr_parameters[:fq]  += [
      "-" + ActiveFedora::SolrQueryBuilder.construct_query_for_ids(ids)
    ]
  end

  def show_only_works_not_parent(solr_parameters)
    solr_parameters[:fq] ||= []
    solr_parameters[:fq]  += [
      "-" + ActiveFedora::SolrQueryBuilder.construct_query(member_ids_ssim: @id)
    ]
  end

  def only_works?
    true
  end
end

Version data entries

46 entries across 46 versions & 1 rubygems

Version Path
hyrax-2.9.6 app/search_builders/hyrax/my/find_works_search_builder.rb
hyrax-2.9.5 app/search_builders/hyrax/my/find_works_search_builder.rb
hyrax-2.9.4 app/search_builders/hyrax/my/find_works_search_builder.rb
hyrax-2.9.3 app/search_builders/hyrax/my/find_works_search_builder.rb
hyrax-2.9.2 app/search_builders/hyrax/my/find_works_search_builder.rb
hyrax-2.9.1 app/search_builders/hyrax/my/find_works_search_builder.rb
hyrax-2.9.0 app/search_builders/hyrax/my/find_works_search_builder.rb
hyrax-2.8.0 app/search_builders/hyrax/my/find_works_search_builder.rb
hyrax-2.7.2 app/search_builders/hyrax/my/find_works_search_builder.rb
hyrax-2.7.1 app/search_builders/hyrax/my/find_works_search_builder.rb
hyrax-2.7.0 app/search_builders/hyrax/my/find_works_search_builder.rb
hyrax-2.6.0 app/search_builders/hyrax/my/find_works_search_builder.rb
hyrax-2.5.1 app/search_builders/hyrax/my/find_works_search_builder.rb
hyrax-2.5.0 app/search_builders/hyrax/my/find_works_search_builder.rb
hyrax-3.0.0.pre.beta2 app/search_builders/hyrax/my/find_works_search_builder.rb
hyrax-2.4.1 app/search_builders/hyrax/my/find_works_search_builder.rb
hyrax-3.0.0.pre.beta1 app/search_builders/hyrax/my/find_works_search_builder.rb
hyrax-2.4.0 app/search_builders/hyrax/my/find_works_search_builder.rb
hyrax-2.3.3 app/search_builders/hyrax/my/find_works_search_builder.rb
hyrax-2.3.2 app/search_builders/hyrax/my/find_works_search_builder.rb