Class: FrederickAPI::V2::Helpers::QueryBuilder

Inherits:
JsonApiClient::Query::Builder
  • Object
show all
Defined in:
lib/frederick_api/v2/helpers/query_builder.rb

Overview

Used to convert nested params to dot notation for Frederick API

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(klass, requestor = nil) ⇒ QueryBuilder

Returns a new instance of QueryBuilder.



12
13
14
15
# File 'lib/frederick_api/v2/helpers/query_builder.rb', line 12

def initialize(klass, requestor = nil)
  super(klass)
  @requestor = requestor || klass.requestor
end

Instance Attribute Details

#requestorObject (readonly)

Returns the value of attribute requestor.



10
11
12
# File 'lib/frederick_api/v2/helpers/query_builder.rb', line 10

def requestor
  @requestor
end

Instance Method Details

#all_recordsObject



49
50
51
# File 'lib/frederick_api/v2/helpers/query_builder.rb', line 49

def all_records
  self.all.pages.all_records
end

#filter_paramsObject



37
38
39
40
41
42
43
44
45
46
47
# File 'lib/frederick_api/v2/helpers/query_builder.rb', line 37

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

#find(args = {}) ⇒ Object



26
27
28
29
30
31
32
33
34
35
# File 'lib/frederick_api/v2/helpers/query_builder.rb', line 26

def find(args = {})
  case args
  when Hash
    where(args)
  else
    @primary_key = args
  end

  requestor.get(params)
end

#paramsObject



17
18
19
20
21
22
23
24
# 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) ⇒ Object



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/frederick_api/v2/helpers/query_builder.rb', line 53

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