class ActiveSet::Paginating::Operation

Public Class Methods

new(set, instructions_hash) click to toggle source
# File lib/active_set/paginating/operation.rb, line 9
def initialize(set, instructions_hash)
  @set = set
  @instructions_hash = instructions_hash
end

Public Instance Methods

execute() click to toggle source
# File lib/active_set/paginating/operation.rb, line 14
def execute
  [ActiveRecordStrategy, EnumerableStrategy].each do |strategy|
    maybe_set_or_false = strategy.new(@set, operation_instructions).execute
    break(maybe_set_or_false) if maybe_set_or_false
  end
end
operation_instructions() click to toggle source
# File lib/active_set/paginating/operation.rb, line 21
def operation_instructions
  @instructions_hash.symbolize_keys.tap do |h|
    h[:page] = page_operation_instruction(h[:page])
    h[:size] = size_operation_instruction(h[:size])
    h[:count] = count_operation_instruction(@set)
  end
end

Private Instance Methods

count_operation_instruction(set) click to toggle source
# File lib/active_set/paginating/operation.rb, line 45
def count_operation_instruction(set)
  # https://work.stevegrossi.com/2015/04/25/how-to-count-with-activerecord/
  maybe_integer_or_hash = set.size
  return maybe_integer_or_hash.count if maybe_integer_or_hash.is_a?(Hash)

  maybe_integer_or_hash
end
page_operation_instruction(initial) click to toggle source
# File lib/active_set/paginating/operation.rb, line 31
def page_operation_instruction(initial)
  return 1 unless initial
  return 1 if initial.to_i <= 0

  initial.to_i
end
size_operation_instruction(initial) click to toggle source
# File lib/active_set/paginating/operation.rb, line 38
def size_operation_instruction(initial)
  return 25 unless initial
  return 25 if initial.to_i <= 0

  initial.to_i
end