class Celsius::PrimoUbpb::Adapter::Search::SearchResultTransformation::ProcessRecords
Public Instance Methods
call()
click to toggle source
# File lib/celsius/primo_ubpb/adapter/search/search_result_transformation/process_records.rb, line 7 def call target["hits"]["hits"].each do |record| add_hbz_id_to_identifier!(record) add_relation!(record) add_signature!(record) add_is_part_of!(record) remove_toc!(record) # it just bloats the search result replace_title_with_short_title!(record) end end
Private Instance Methods
add_hbz_id_to_identifier!(record)
click to toggle source
# File lib/celsius/primo_ubpb/adapter/search/search_result_transformation/process_records.rb, line 21 def add_hbz_id_to_identifier!(record) if hbz_id = (record["_source"]["search"] || {})["lsr05"] Celsius::Hash.smart_store(record, "identifier", hbz_id => "hbzId") end end
add_is_part_of!(record)
click to toggle source
# File lib/celsius/primo_ubpb/adapter/search/search_result_transformation/process_records.rb, line 49 def add_is_part_of!(record) if json_encoded_superorders = (record["_source"]["display"] || {})["lds01"] ensure_array(json_encoded_superorders).each do |json_encoded_superorder| parsed_superorder = JSON.parse(json_encoded_superorder) Celsius::Hash.smart_store(record, "isPartOf", {}.tap do |superorder| superorder["title"] = parsed_superorder["label"] if ht_number = parsed_superorder["ht_number"] superorder["identifier"] = { ht_number => "hbzId" } end if volume = parsed_superorder["volume_count"] superorder["volume"] = volume end if label_additions = parsed_superorder["label_additions"] superorder["title"] << ensure_array(label_additions).first end end) end end end
add_relation!(record)
click to toggle source
# File lib/celsius/primo_ubpb/adapter/search/search_result_transformation/process_records.rb, line 27 def add_relation!(record) if json_encoded_relations = (record["_source"]["display"] || {})["relation"] ensure_array(json_encoded_relations).each do |json_encoded_relation| parsed_relation = JSON.parse(json_encoded_relation) Celsius::Hash.smart_store(record, "relation", {}.tap do |relation| relation["title"] = parsed_relation["label"] if ht_number = parsed_relation["ht_number"] relation["identifier"] = { ht_number => "hbzId" } end end) end end end
add_signature!(record)
click to toggle source
# File lib/celsius/primo_ubpb/adapter/search/search_result_transformation/process_records.rb, line 43 def add_signature!(record) if signature = (record["_source"]["display"] || {})["lds10"] Celsius::Hash.smart_store(record, "signature", signature) end end
ensure_array(object)
click to toggle source
# File lib/celsius/primo_ubpb/adapter/search/search_result_transformation/process_records.rb, line 73 def ensure_array(object) object.is_a?(Array) ? object : [object] end
remove_toc!(record)
click to toggle source
# File lib/celsius/primo_ubpb/adapter/search/search_result_transformation/process_records.rb, line 77 def remove_toc!(record) (record["_source"]["search"] || {}).delete("toc") end
replace_title_with_short_title!(record)
click to toggle source
# File lib/celsius/primo_ubpb/adapter/search/search_result_transformation/process_records.rb, line 81 def replace_title_with_short_title!(record) if short_title = (record["_source"]["display"] || {})["lds02"] record["title"] = short_title end end