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