class ParamsReady::Parameter::State
Public Class Methods
relation_delegator(name)
click to toggle source
# File lib/params_ready/parameter/state.rb, line 17 def self.relation_delegator(name) define_method name do |relation_name, *args| relation(relation_name).send(name, *args) end ruby2_keywords name end
Public Instance Methods
after_page(relation_name, keyset)
click to toggle source
# File lib/params_ready/parameter/state.rb, line 78 def after_page(relation_name, keyset) value = relation(relation_name).pagination.after_page_value(keyset) update_in(value, [relation_name, :pagination]) end
before_page(relation_name, keyset)
click to toggle source
# File lib/params_ready/parameter/state.rb, line 73 def before_page(relation_name, keyset) value = relation(relation_name).pagination.before_page_value(keyset) update_in(value, [relation_name, :pagination]) end
current_page()
click to toggle source
# File lib/params_ready/parameter/state.rb, line 46 def current_page page end
first_page(relation_name)
click to toggle source
# File lib/params_ready/parameter/state.rb, line 50 def first_page(relation_name) value = relation(relation_name).pagination.first_page_value update_in(value, [relation_name, :pagination]) end
last_page(relation_name, *args, **opts)
click to toggle source
# File lib/params_ready/parameter/state.rb, line 55 def last_page(relation_name, *args, **opts) value = relation(relation_name).pagination.last_page_value(*args, **opts) return if value.nil? update_in(value, [relation_name, :pagination]) end
limited_at(relation_name, limit)
click to toggle source
# File lib/params_ready/parameter/state.rb, line 83 def limited_at(relation_name, limit) limit_key = relation(relation_name).pagination.limit_key update_in(limit, [relation_name, :pagination, limit_key]) end
next_page(relation_name, delta = 1, count: nil)
click to toggle source
# File lib/params_ready/parameter/state.rb, line 67 def next_page(relation_name, delta = 1, count: nil) value = relation(relation_name).pagination.next_page_value(delta, count: count) return if value.nil? update_in(value, [relation_name, :pagination]) end
page(relation_name = nil, delta = 0, count: nil)
click to toggle source
# File lib/params_ready/parameter/state.rb, line 34 def page(relation_name = nil, delta = 0, count: nil) if delta == 0 clone else raise ParamsReadyError, "Relation must be specified when delta is not 0" if relation_name.nil? return nil unless relation(relation_name).pagination.can_yield_page? delta, count: count new_offset = relation(relation_name).new_offset(delta) update_in(new_offset, [relation_name, :pagination, 0]) end end
previous_page(relation_name, delta = 1)
click to toggle source
# File lib/params_ready/parameter/state.rb, line 61 def previous_page(relation_name, delta = 1) value = relation(relation_name).pagination.previous_page_value(delta) return if value.nil? update_in(value, [relation_name, :pagination]) end
relation(name)
click to toggle source
# File lib/params_ready/parameter/state.rb, line 12 def relation(name) raise ParamsReadyError, "Relation not defined: '#{name}'" unless relations.include? name child(name) end
reordered(relation_name, column, direction)
click to toggle source
# File lib/params_ready/parameter/state.rb, line 94 def reordered(relation_name, column, direction) new_order = relation(relation_name).ordering.reordered_value(column, direction) reordered = update_in(new_order, [relation_name, :ordering]) reordered.first_page(relation_name) end
toggled_order(relation_name, column)
click to toggle source
# File lib/params_ready/parameter/state.rb, line 88 def toggled_order(relation_name, column) new_order = relation(relation_name).ordering.toggled_order_value(column) toggled = update_in(new_order, [relation_name, :ordering]) toggled.first_page(relation_name) end