class Solr::Delete::Request

Constants

PATH

Attributes

delete_command[R]

Public Class Methods

new(options = {}) click to toggle source
# File lib/solr/delete/request.rb, line 10
def initialize(options = {})
  options = validate_delete_options!(options)
  @delete_command = { delete: options }
end

Public Instance Methods

run(commit: false, runner_options: nil) click to toggle source
# File lib/solr/delete/request.rb, line 15
def run(commit: false, runner_options: nil)
  http_request = build_http_request(commit)
  options = default_runner_options.merge(runner_options || {})
  Solr::Request::Runner.call(request: http_request, **options)
end

Private Instance Methods

build_http_request(commit) click to toggle source
# File lib/solr/delete/request.rb, line 33
def build_http_request(commit)
  Solr::Request::HttpRequest.new(path: PATH,
                                 body: delete_command,
                                 url_params: { commit: commit },
                                 method: :post)
end
default_runner_options() click to toggle source
# File lib/solr/delete/request.rb, line 23
def default_runner_options
  if Solr.cloud_enabled?
    { node_selection_strategy: Solr::Request::Cloud::LeaderNodeSelectionStrategy }
  elsif Solr.master_slave_enabled?
    { node_selection_strategy: Solr::Request::MasterSlave::MasterNodeSelectionStrategy }
  else
    {}
  end
end
validate_delete_options!(options) click to toggle source
# File lib/solr/delete/request.rb, line 40
def validate_delete_options!(options)
  options = options.deep_symbolize_keys
  id, query = options.values_at(:id, :query)
  error_message = 'options must contain either id or query, but not both'
  raise ArgumentError, error_message if id.nil? && query.nil?
  raise ArgumentError, error_message if id && query
  options
end