Class: Homeflow::API::Query

Inherits:
RequestSpecification show all
Defined in:
lib/homeflow/api/query.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(resource_class, params) ⇒ Query

Returns a new instance of Query.



8
9
10
11
12
13
14
15
16
17
# File 'lib/homeflow/api/query.rb', line 8

def initialize(resource_class, params)
  @resource_class = resource_class
  @fields = []
  @options = {}
  @page_size = nil
  @page =  1
  search,fields = nil
  add_search(search) if search = params.delete(:query)
  set_fields(fields) if fields = params.delete(:fields)
end

Instance Attribute Details

#fields(*args) ⇒ Object

Returns the value of attribute fields.



6
7
8
# File 'lib/homeflow/api/query.rb', line 6

def fields
  @fields
end

#page(page) ⇒ Object

Returns the value of attribute page.



6
7
8
# File 'lib/homeflow/api/query.rb', line 6

def page
  @page
end

#page_size(page_size) ⇒ Object

Returns the value of attribute page_size.



6
7
8
# File 'lib/homeflow/api/query.rb', line 6

def page_size
  @page_size
end

#queryObject

Returns the value of attribute query.



6
7
8
# File 'lib/homeflow/api/query.rb', line 6

def query
  @query
end

#resource_classObject

Returns the value of attribute resource_class.



6
7
8
# File 'lib/homeflow/api/query.rb', line 6

def resource_class
  @resource_class
end

Instance Method Details

#add_search(search_hash) ⇒ Object



44
45
46
47
# File 'lib/homeflow/api/query.rb', line 44

def add_search(search_hash)
  @query ||= {}
  @query.merge!(search_hash)
end

#each(&block) ⇒ Object



65
66
67
68
69
70
71
72
73
74
75
# File 'lib/homeflow/api/query.rb', line 65

def each(&block)
  r = results.send(resource_class.resource_uri)
  r.each {|k|
    case block.arity
      when 1
        yield k
      when 2
        yield k, results
    end
  }
end

#options(options_hash) ⇒ Object



34
35
36
37
# File 'lib/homeflow/api/query.rb', line 34

def options(options_hash)
  @options.merge!(options_hash)
  self
end

#responseObject



61
62
63
# File 'lib/homeflow/api/query.rb', line 61

def response
  results
end

#resultsObject



53
54
55
# File 'lib/homeflow/api/query.rb', line 53

def results
  @_results ||= results!
end

#results!Object



57
58
59
# File 'lib/homeflow/api/query.rb', line 57

def results!
  @_results = @resource_class.execute(self)
end

#set_fields(fields_array) ⇒ Object



49
50
51
# File 'lib/homeflow/api/query.rb', line 49

def set_fields(fields_array)
  @fields = fields_array
end

#to_paramsObject



77
78
79
80
81
# File 'lib/homeflow/api/query.rb', line 77

def to_params
  options = {}
  options =  options.merge({:page_size => @page_size}) unless @page_size.nil?
  options = options.merge({:search => @query, :fields => @fields.join(','), :search_options => @options, :page=> @page})
end

#where(search_hash) ⇒ Object



29
30
31
32
# File 'lib/homeflow/api/query.rb', line 29

def where(search_hash)
  add_search(search_hash)
  self
end