From 056346fcff28f0677599216abaab8ce9e89fe516 Mon Sep 17 00:00:00 2001 From: Daniel Pierce Date: Fri, 20 Dec 2024 10:41:06 -0500 Subject: [PATCH] Return Resources instead of SolrHits --- app/services/hyrax/custom_queries/find_by_date_range.rb | 8 +++++--- .../hyrax/custom_queries/find_models_by_access.rb | 8 +++++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/app/services/hyrax/custom_queries/find_by_date_range.rb b/app/services/hyrax/custom_queries/find_by_date_range.rb index 2fc9a7801c..b04bd69613 100644 --- a/app/services/hyrax/custom_queries/find_by_date_range.rb +++ b/app/services/hyrax/custom_queries/find_by_date_range.rb @@ -25,11 +25,13 @@ def initialize(query_service:) # @param models [Array] # @param start_datetime [DateTime] # @param end_datetime [DateTime] + # @return [Array] def find_by_date_range(start_datetime:, end_datetime: nil, models: nil) end_range = end_datetime.blank? ? '*' : end_datetime.utc.xmlschema - args = "system_create_dtsi:[#{start_datetime.utc.xmlschema} TO #{end_range}]" - args += " AND has_model_ssim: (#{models.map { |m| "\"#{m}\"" }.join(' OR ')})" unless models.empty? - Hyrax::SolrService.query(args) + query = "system_create_dtsi:[#{start_datetime.utc.xmlschema} TO #{end_range}]" + query += " AND has_model_ssim: (#{models.map { |m| "\"#{m}\"" }.join(' OR ')})" unless models.empty? + ids = Hyrax::SolrService.query_result(query, fl: 'id')['response']['docs'].map { |doc| doc['id'] } + Hyrax.query_service.find_many_by_ids(ids: ids) end end end diff --git a/app/services/hyrax/custom_queries/find_models_by_access.rb b/app/services/hyrax/custom_queries/find_models_by_access.rb index 7ec5115196..0e3263b50d 100644 --- a/app/services/hyrax/custom_queries/find_models_by_access.rb +++ b/app/services/hyrax/custom_queries/find_models_by_access.rb @@ -24,11 +24,13 @@ def initialize(query_service:) # # @param model [Class] # @param ids [Enumerable<#to_s>, Symbol] + # @return [Array] # def find_models_by_access(mode:, models: nil, agent:, group: nil) - args = "#{Hydra.config.permissions[mode.to_sym][(group ? 'group' : 'individual').to_sym]}:#{agent}" - args += " AND has_model_ssim: (#{models.map { |m| "\"#{m}\"" }.join(' OR ')})" unless models.empty? - Hyrax::SolrService.query(args) + query = "#{Hydra.config.permissions[mode.to_sym][(group ? 'group' : 'individual').to_sym]}:#{agent}" + query += " AND has_model_ssim: (#{models.map { |m| "\"#{m}\"" }.join(' OR ')})" unless models.empty? + ids = Hyrax::SolrService.query_result(query, fl: 'id')['response']['docs'].map { |doc| doc['id'] } + Hyrax.query_service.find_many_by_ids(ids: ids) end end end