Class: Tito::Admin::QueryBuilder
- Inherits:
-
Object
- Object
- Tito::Admin::QueryBuilder
- Defined in:
- lib/tito/admin/query_builder.rb
Instance Attribute Summary collapse
-
#page_number ⇒ Object
readonly
Returns the value of attribute page_number.
Instance Method Summary collapse
- #add_expand(fields) ⇒ Object
- #add_order(fields) ⇒ Object
- #add_search(term) ⇒ Object
- #add_where(conditions) ⇒ Object
- #dup ⇒ Object
- #expand_params ⇒ Object
-
#initialize ⇒ QueryBuilder
constructor
A new instance of QueryBuilder.
- #set_page(number) ⇒ Object
- #set_per_page(size) ⇒ Object
- #to_params ⇒ Object
Constructor Details
#initialize ⇒ QueryBuilder
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_number ⇒ Object (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 (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 |
#dup ⇒ Object
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_params ⇒ Object
45 46 47 |
# File 'lib/tito/admin/query_builder.rb', line 45 def @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_params ⇒ Object
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!() params.merge!(where_params) params.merge!(order_params) params end |