Module: Elastic::Nodes::Concerns::Sortable

Included in:
Agg::Top, Sort
Defined in:
lib/elastic/nodes/concerns/sortable.rb

Constant Summary collapse

ORDER =
[:asc, :desc]
MODES =
[:min, :max, :sum, :avg, :median]

Instance Method Summary collapse

Instance Method Details

#add_sort(_field, order: :asc, mode: nil, missing: nil) ⇒ Object

Raises:

  • (ArgumentError)


18
19
20
21
22
23
24
25
26
27
28
# File 'lib/elastic/nodes/concerns/sortable.rb', line 18

def add_sort(_field, order: :asc, mode: nil, missing: nil)
  raise ArgumentError, "invalid sort order #{order}" unless ORDER.include?(order.to_sym)
  raise ArgumentError, "invalid sort mode #{mode}" if mode && !MODES.include?(mode.to_sym)

  options = { 'order' => order.to_s }
  options['mode'] = mode.to_s if mode.present?
  options['missing'] = missing if missing.present?

  registered_sorts << { _field.to_s => options.freeze }.freeze
  self
end

#cloneObject



6
7
8
# File 'lib/elastic/nodes/concerns/sortable.rb', line 6

def clone
  copy_sorts super
end

#reset_sortsObject



30
31
32
33
# File 'lib/elastic/nodes/concerns/sortable.rb', line 30

def reset_sorts
  @registered_sorts = nil
  self
end

#simplifyObject



10
11
12
# File 'lib/elastic/nodes/concerns/sortable.rb', line 10

def simplify
  copy_sorts super
end

#sortsObject



14
15
16
# File 'lib/elastic/nodes/concerns/sortable.rb', line 14

def sorts
  registered_sorts.dup
end