UNC-Libraries/hy-c

View on GitHub
app/helpers/work_utils_helper.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
# frozen_string_literal: true
module WorkUtilsHelper
  def self.fetch_work_data_by_fileset_id(fileset_id)
    # Retrieve the fileset data
    fileset_data = ActiveFedora::SolrService.get("id:#{fileset_id}", rows: 1)['response']['docs'].first || {}
    Rails.logger.warn("No fileset data found for fileset id: #{fileset_id}") if fileset_data.blank?
    # Retrieve the work related to the fileset
    work_data = ActiveFedora::SolrService.get("file_set_ids_ssim:#{fileset_id}", rows: 1)['response']['docs'].first || {}
    Rails.logger.warn("No work found associated with fileset id: #{fileset_id}") if work_data.blank?
    # Set the admin set to an empty hash if the solr query returns nil
    admin_set_name = work_data['admin_set_tesim']&.first
    admin_set_data = admin_set_name ? ActiveFedora::SolrService.get("title_tesim:#{admin_set_name}", { :rows => 1, 'df' => 'title_tesim'})['response']['docs'].first : {}
    Rails.logger.warn(self.generate_warning_message(admin_set_name, fileset_id)) if admin_set_data.blank?
    {
      work_id: fileset_data['id'],
      work_type: work_data.dig('has_model_ssim', 0),
      title: work_data['title_tesim']&.first,
      admin_set_id: admin_set_data['id'],
      admin_set_name: admin_set_name
    }
  end

  private_class_method

  def self.generate_warning_message(admin_set_name, fileset_id)
    if admin_set_name.blank?
      return "Could not find an admin set, the work with fileset id: #{fileset_id} has no admin set name."
    else
      return "No admin set found with title_tesim: #{admin_set_name}."
    end
  end
end