Sha256: 2e4f5ea59c7a36f7cb6a0173e33095986dd68d9456e236a1bd12d42584effda2

Contents?: true

Size: 1.44 KB

Versions: 3

Compression:

Stored size: 1.44 KB

Contents

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

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

  def initialize(context)
    super(context)
    @id = context.params[: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

3 entries across 3 versions & 1 rubygems

Version Path
sufia-7.3.0.rc3 app/search_builders/sufia/find_works_search_builder.rb
sufia-7.3.0.rc2 app/search_builders/sufia/find_works_search_builder.rb
sufia-7.3.0.rc1 app/search_builders/sufia/find_works_search_builder.rb