module Filterparams

Constants

FILTER_BINDING_KEY
ORDER_KEY

Public Class Methods

extract_query(data) click to toggle source
# File lib/filterparams/api.rb, line 8
def extract_query(data)
  params = extract_params_hash data
  orders = extract_orders data
  filter = if data.key? FILTER_BINDING_KEY
             extract_filter data[FILTER_BINDING_KEY], params
           else
             auto_filter_for params
           end

  query = Filterparams::Query.new
  query.filter(filter).add_order_obj(*orders)
end

Private Class Methods

auto_filter_for(params) click to toggle source
# File lib/filterparams/api.rb, line 43
def auto_filter_for(params)
  params.values.inject do |left, right|
    Filterparams::And.new(left, right)
  end
end
extract_filter(filter_string, params) click to toggle source
# File lib/filterparams/api.rb, line 26
def extract_filter(filter_string, params)
  if filter_string.is_a? Array
    filter_string = filter_string[0]
  end

  parsed = Filterparams::BindingParser.new.parse(filter_string)
  Filterparams::BindingTransform.new(params).apply(parsed)
end
extract_orders(params) click to toggle source
# File lib/filterparams/api.rb, line 39
def extract_orders(params)
  Filterparams::OrderExtractor.new(params[ORDER_KEY] || []).orders
end
extract_params_hash(params) click to toggle source
# File lib/filterparams/api.rb, line 35
def extract_params_hash(params)
  Filterparams::ParamExtractor.new(params).params_hash
end