Class: ROM::Solr::Dataset

Inherits:
HTTP::Dataset
  • Object
show all
Defined in:
lib/rom/solr/dataset.rb

Direct Known Subclasses

SelectDataset

Instance Method Summary collapse

Instance Method Details

#add_param_values(key, val) ⇒ Object

Coerce param value to an Array and set new value to set union with other Array of values.



33
34
35
36
# File 'lib/rom/solr/dataset.rb', line 33

def add_param_values(key, val)
  new_val = Array.wrap(params[key]) | Array.wrap(val)
  add_params(key => new_val)
end

#add_params(new_params = {}) ⇒ Object



39
40
41
42
# File 'lib/rom/solr/dataset.rb', line 39

def add_params(new_params = {})
  return self if new_params.nil? || new_params.empty?
  with_params params.merge(new_params).compact
end

#default_params(defaults = {}) ⇒ Object



44
45
46
# File 'lib/rom/solr/dataset.rb', line 44

def default_params(defaults = {})
  with_params defaults.merge(params)
end

#each(&block) ⇒ Object



71
72
73
74
# File 'lib/rom/solr/dataset.rb', line 71

def each(&block)
  return to_enum unless block_given?
  enumerable_response.each(&block)
end

#enumerable_responseObject



76
77
78
79
80
81
82
83
# File 'lib/rom/solr/dataset.rb', line 76

def enumerable_response
  if options[:enum_on].nil?
    Array.wrap(response)
  else
    keys = Array.wrap options[:enum_on]
    Array.wrap response.dig(*keys)
  end
end

#param?(key) ⇒ Boolean

Returns:

  • (Boolean)


57
58
59
# File 'lib/rom/solr/dataset.rb', line 57

def param?(key)
  params.key?(key)
end

#responseObject



66
67
68
# File 'lib/rom/solr/dataset.rb', line 66

def response
  cache.fetch_or_store(:response) { __response__ }
end

#with_enum_on(keys) ⇒ Object



25
26
27
28
29
# File 'lib/rom/solr/dataset.rb', line 25

def with_enum_on(keys)
  k = Array.wrap(keys)
  return self if k.empty?
  with_options(enum_on: k)
end

#with_params(new_params) ⇒ Object



49
50
51
52
53
54
55
# File 'lib/rom/solr/dataset.rb', line 49

def with_params(new_params)
  if params == new_params
    self
  else
    with_options(params: new_params)
  end
end

#with_path(segments) ⇒ Object



19
20
21
22
23
# File 'lib/rom/solr/dataset.rb', line 19

def with_path(segments)
  s = Array.wrap(segments)
  return self if s.empty?
  with_options(path: s.compact.join('/'))
end