Class: Munson::Query
Instance Attribute Summary collapse
-
#values ⇒ Object
readonly
Returns the value of attribute values.
Instance Method Summary collapse
- #fetch ⇒ Object
-
#fields(*args) ⇒ Object
Hash resouce_name: [array of attribs].
- #filter(*args) ⇒ Object
- #find(id) ⇒ Object
-
#headers(opts = {}) ⇒ Munson::Query
Chainably set headers.
-
#include(*args) ⇒ Munson::Query
Chainably include related resources.
-
#initialize(client = nil) ⇒ Query
constructor
Description of method.
-
#page(opts = {}) ⇒ Munson::Query
Chainably set page options.
-
#sort(*args) ⇒ Munson::Query
Chainably sort results.
- #to_params ⇒ Object
-
#to_query_string ⇒ String
Query as a query string.
- #to_s ⇒ Object
Constructor Details
#initialize(client = nil) ⇒ Query
Description of method
8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/munson/query.rb', line 8 def initialize(client = nil) @client = client @headers = {} @values = { include: [], fields: [], filter: [], sort: [], page: {} } end |
Instance Attribute Details
#values ⇒ Object (readonly)
Returns the value of attribute values.
3 4 5 |
# File 'lib/munson/query.rb', line 3 def values @values end |
Instance Method Details
#fetch ⇒ Object
20 21 22 23 24 25 26 27 |
# File 'lib/munson/query.rb', line 20 def fetch if @client response = @client.agent.get(params: to_params, headers: @headers) ResponseMapper.new(response.body).collection else raise Munson::ClientNotSet, "Client was not set. Query#new(client)" end end |
#fields(*args) ⇒ Object
Hash resouce_name: [array of attribs]
131 132 133 134 |
# File 'lib/munson/query.rb', line 131 def fields(*args) @values[:fields] += args self end |
#filter(*args) ⇒ Object
136 137 138 139 |
# File 'lib/munson/query.rb', line 136 def filter(*args) @values[:filter] += args self end |
#find(id) ⇒ Object
29 30 31 32 33 34 35 36 |
# File 'lib/munson/query.rb', line 29 def find(id) if @client response = @client.agent.get(id: id, params: to_params, headers: @headers) ResponseMapper.new(response.body).resource else raise Munson::ClientNotSet, "Client was not set. Query#new(client)" end end |
#headers(opts = {}) ⇒ Munson::Query
Chainably set headers
80 81 82 83 |
# File 'lib/munson/query.rb', line 80 def headers(opts={}) @headers.merge!(opts) self end |
#include(*args) ⇒ Munson::Query
Chainably include related resources.
100 101 102 103 |
# File 'lib/munson/query.rb', line 100 def include(*args) @values[:include] += args self end |
#page(opts = {}) ⇒ Munson::Query
Chainably set page options
66 67 68 69 |
# File 'lib/munson/query.rb', line 66 def page(opts={}) @values[:page].merge!(opts) self end |
#sort(*args) ⇒ Munson::Query
Note:
Default order is ascending
Chainably sort results
124 125 126 127 128 |
# File 'lib/munson/query.rb', line 124 def sort(*args) validate_sort_args(args.select{|arg| arg.is_a?(Hash)}) @values[:sort] += args self end |
#to_params ⇒ Object
47 48 49 50 51 52 53 54 55 |
# File 'lib/munson/query.rb', line 47 def to_params str = {} str[:filter] = filter_to_query_value unless @values[:filter].empty? str[:fields] = fields_to_query_value unless @values[:fields].empty? str[:include] = include_to_query_value unless @values[:include].empty? str[:sort] = sort_to_query_value unless @values[:sort].empty? str[:page] = @values[:page] unless @values[:page].empty? str end |
#to_query_string ⇒ String
Returns query as a query string.
39 40 41 |
# File 'lib/munson/query.rb', line 39 def to_query_string Faraday::Utils.build_nested_query(to_params) end |
#to_s ⇒ Object
43 44 45 |
# File 'lib/munson/query.rb', line 43 def to_s to_query_string end |