class FrederickAPI::V2::Helpers::QueryBuilder

Used to convert nested params to dot notation for Frederick API

Attributes

requestor[R]

Public Class Methods

new(klass, opts = {}) click to toggle source
Calls superclass method
# File lib/frederick_api/v2/helpers/query_builder.rb, line 12
def initialize(klass, opts = {})
  super(klass, opts)
  @requestor = opts[:requestor] || klass.requestor
end

Public Instance Methods

all_records() click to toggle source
# File lib/frederick_api/v2/helpers/query_builder.rb, line 38
def all_records
  self.all.pages.all_records
end
filter_params() click to toggle source
Calls superclass method
# File lib/frederick_api/v2/helpers/query_builder.rb, line 26
def filter_params
  super_filter_params = super

  if (filters = super_filter_params[:filter])
    filters.each do |filter_name, filter_val|
      filters[filter_name] = filter_val.join(',') if filter_val.is_a?(Array)
    end
  end

  super_filter_params
end
params() click to toggle source
# File lib/frederick_api/v2/helpers/query_builder.rb, line 17
def params
  to_dot_params(
    filter_params.merge(pagination_params.merge(includes_params).merge(select_params))
  ).merge(order_params)
    .merge(primary_key_params)
    .merge(path_params)
    .merge(additional_params)
end
to_dot_params(object, prefix = nil) click to toggle source
# File lib/frederick_api/v2/helpers/query_builder.rb, line 42
def to_dot_params(object, prefix = nil)
  return {} if object == {}

  if object.is_a? Hash
    object.map do |key, value|
      if prefix
        to_dot_params value, "#{prefix}.#{key}"
      else
        to_dot_params value, key.to_s
      end
    end.reduce(&:merge)
  else
    { prefix => object }
  end
end

Protected Instance Methods

_fetch() click to toggle source
# File lib/frederick_api/v2/helpers/query_builder.rb, line 60
def _fetch
  (requestor || klass.requestor).get(params)
end

Private Instance Methods

_new_scope(opts = {}) click to toggle source
# File lib/frederick_api/v2/helpers/query_builder.rb, line 66
def _new_scope(opts = {})
  self.class.new(@klass,
                 requestor:         requestor,
                 primary_key:       opts.fetch(:primary_key, @primary_key),
                 pagination_params: @pagination_params.merge(opts.fetch(:pagination_params, {})),
                 path_params:       @path_params.merge(opts.fetch(:path_params, {})),
                 additional_params: @additional_params.merge(opts.fetch(:additional_params, {})),
                 filters:           @filters.merge(opts.fetch(:filters, {})),
                 includes:          @includes + opts.fetch(:includes, []),
                 orders:            @orders + opts.fetch(:orders, []),
                 fields:            @fields + opts.fetch(:fields, []))
end