Class: Hyrax::CustomQueries::FindModelsByAccess

Inherits:
Object
  • Object
show all
Defined in:
app/services/hyrax/custom_queries/find_models_by_access.rb

Overview

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(query_service:) ⇒ FindModelsByAccess



11
12
13
# File 'app/services/hyrax/custom_queries/find_models_by_access.rb', line 11

def initialize(query_service:)
  @query_service = query_service
end

Instance Attribute Details

#query_serviceObject (readonly)

Returns the value of attribute query_service.



15
16
17
# File 'app/services/hyrax/custom_queries/find_models_by_access.rb', line 15

def query_service
  @query_service
end

Class Method Details

.queriesObject



7
8
9
# File 'app/services/hyrax/custom_queries/find_models_by_access.rb', line 7

def self.queries
  [:find_models_by_access]
end

Instance Method Details

#find_models_by_access(mode:, models: nil, agent:, group: nil) ⇒ Array<Hyrax::Resource>

Note:

this is an unoptimized default implementation of this custom query. it’s Hyrax’s policy to provide such implementations of custom queries in use for cross-compatibility of Valkyrie query services. it’s advisable to provide an optimized query for the specific adapter.



29
30
31
32
33
34
# File 'app/services/hyrax/custom_queries/find_models_by_access.rb', line 29

def find_models_by_access(mode:, models: nil, agent:, group: nil)
  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