Class: Tito::Admin::QueryBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/tito/admin/query_builder.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeQueryBuilder

Returns a new instance of QueryBuilder.



6
7
8
9
10
11
12
13
# File 'lib/tito/admin/query_builder.rb', line 6

def initialize
  @wheres = {}
  @orders = {}
  @search_term = nil
  @expands = []
  @page_number = nil
  @per_page = nil
end

Instance Attribute Details

#page_numberObject (readonly)

Returns the value of attribute page_number.



4
5
6
# File 'lib/tito/admin/query_builder.rb', line 4

def page_number
  @page_number
end

Instance Method Details

#add_expand(fields) ⇒ Object



30
31
32
33
# File 'lib/tito/admin/query_builder.rb', line 30

def add_expand(fields)
  @expands.concat(fields.flatten)
  self
end

#add_order(fields) ⇒ Object



20
21
22
23
# File 'lib/tito/admin/query_builder.rb', line 20

def add_order(fields)
  @orders.merge!(fields)
  self
end

#add_search(term) ⇒ Object



25
26
27
28
# File 'lib/tito/admin/query_builder.rb', line 25

def add_search(term)
  @search_term = term
  self
end

#add_where(conditions) ⇒ Object



15
16
17
18
# File 'lib/tito/admin/query_builder.rb', line 15

def add_where(conditions)
  conditions.each { |key, value| @wheres[key] = value }
  self
end

#dupObject



59
60
61
62
63
64
65
# File 'lib/tito/admin/query_builder.rb', line 59

def dup
  super.tap do |copy|
    copy.instance_variable_set(:@wheres, @wheres.dup)
    copy.instance_variable_set(:@orders, @orders.dup)
    copy.instance_variable_set(:@expands, @expands.dup)
  end
end

#expand_paramsObject



45
46
47
# File 'lib/tito/admin/query_builder.rb', line 45

def expand_params
  @expands.any? ? { "expand" => @expands.join(",") } : {}
end

#set_page(number) ⇒ Object



35
36
37
38
# File 'lib/tito/admin/query_builder.rb', line 35

def set_page(number)
  @page_number = number
  self
end

#set_per_page(size) ⇒ Object



40
41
42
43
# File 'lib/tito/admin/query_builder.rb', line 40

def set_per_page(size)
  @per_page = size
  self
end

#to_paramsObject



49
50
51
52
53
54
55
56
57
# File 'lib/tito/admin/query_builder.rb', line 49

def to_params
  params = {}
  params["page[size]"] = @per_page if @per_page
  params["search[q]"] = @search_term if @search_term
  params.merge!(expand_params)
  params.merge!(where_params)
  params.merge!(order_params)
  params
end