Sha256: 02f7c783fa7018e10f9cc2502f2ae060ecc7c5c54397b61caee1f9bd4ecb5999
Contents?: true
Size: 1.23 KB
Versions: 7
Compression:
Stored size: 1.23 KB
Contents
# frozen_string_literal: true module Valkyrie::Persistence::Solr::Queries # Responsible for returning all members of a given resource as # {Valkyrie::Resource}s class FindMembersQuery attr_reader :resource, :connection, :resource_factory, :model def initialize(resource:, connection:, resource_factory:, model:) @resource = resource @connection = connection @resource_factory = resource_factory @model = model end def run enum_for(:each) end def each return [] unless resource.id.present? unordered_members.sort_by { |x| member_ids.index(x.id) }.each do |member| yield member end end def unordered_members docs.map do |doc| resource_factory.to_resource(object: doc) end end def docs options = { q: query, rows: 1_000_000_000 } options[:fq] = "{!raw f=internal_resource_ssim}#{model}" if model options[:defType] = 'lucene' result = connection.get("select", params: options) result["response"]["docs"] end def member_ids Array.wrap(resource.member_ids) end def query "{!join from=#{MEMBER_IDS} to=join_id_ssi}id:#{id}" end def id resource.id.to_s end end end
Version data entries
7 entries across 7 versions & 1 rubygems