Class: Conversocial::Resources::QueryEngines::Base
- Inherits:
-
Object
- Object
- Conversocial::Resources::QueryEngines::Base
show all
- Includes:
- Utils::HTTP, Utils::Strings, Enumerable
- Defined in:
- lib/conversocial/resources/query_engines/base.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
#add_query_params, #https_basic_auth_get, #https_basic_auth_post
#demodulize
Constructor Details
#initialize(client) ⇒ Base
Returns a new instance of Base.
13
14
15
16
17
|
# File 'lib/conversocial/resources/query_engines/base.rb', line 13
def initialize client
@client = client
@cache = Conversocial::Resources::QueryEngines::Cache.new client.cache_expiry
clear
end
|
Instance Attribute Details
#client ⇒ Object
Returns the value of attribute client.
11
12
13
|
# File 'lib/conversocial/resources/query_engines/base.rb', line 11
def client
@client
end
|
#query_params ⇒ Object
Returns the value of attribute query_params.
11
12
13
|
# File 'lib/conversocial/resources/query_engines/base.rb', line 11
def query_params
@query_params
end
|
Instance Method Details
#clear ⇒ Object
50
51
52
53
|
# File 'lib/conversocial/resources/query_engines/base.rb', line 50
def clear
@query_params = {}
self
end
|
#default_fetch_query_params ⇒ Object
19
20
21
|
# File 'lib/conversocial/resources/query_engines/base.rb', line 19
def default_fetch_query_params
{}
end
|
#default_find_query_params ⇒ Object
23
24
25
|
# File 'lib/conversocial/resources/query_engines/base.rb', line 23
def default_find_query_params
{}
end
|
#each(&block) ⇒ Object
27
28
29
30
31
|
# File 'lib/conversocial/resources/query_engines/base.rb', line 27
def each &block
fetch.each do |member|
block.call(member)
end
end
|
#each_page(&block) ⇒ Object
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
# File 'lib/conversocial/resources/query_engines/base.rb', line 33
def each_page &block
@query_params[:fields] ||= model_klass.fields.join(',')
response = fetch_ex add_query_params("", default_fetch_query_params.merge(@query_params))
begin
continue = block.call response[:items]
continue = true
if continue
next_page_url = (response[:json]['paging'] || {})['next_page']
if next_page_url.present?
response = fetch_ex next_page_url
else
response = nil
end
end
end while response && continue
end
|
#fetch ⇒ Object
87
88
89
90
|
# File 'lib/conversocial/resources/query_engines/base.rb', line 87
def fetch
@query_params[:fields] ||= model_klass.fields.join(',')
(fetch_ex add_query_params("", default_fetch_query_params.merge(@query_params)))[:items]
end
|
#find(find_id) ⇒ Object
66
67
68
69
70
71
72
73
74
75
|
# File 'lib/conversocial/resources/query_engines/base.rb', line 66
def find find_id
@query_params[:fields] ||= model_klass.fields.join(',')
json = get_json add_query_params("/#{find_id}", default_find_query_params.merge(@query_params))
clear
if json
item = new json[resource_name]
attach_content_to_items([item], json['content']).first
end
end
|
#greater_than(field, value) ⇒ Object
106
107
108
|
# File 'lib/conversocial/resources/query_engines/base.rb', line 106
def greater_than field, value
comparison_filter field, "gt", value
end
|
#greater_than_or_equal_to(field, value) ⇒ Object
110
111
112
|
# File 'lib/conversocial/resources/query_engines/base.rb', line 110
def greater_than_or_equal_to field, value
comparison_filter field, "gte", value
end
|
#is_nil(field) ⇒ Object
122
123
124
|
# File 'lib/conversocial/resources/query_engines/base.rb', line 122
def is_nil field
comparison_filter field, "isnull", 1
end
|
#is_not_nil(field) ⇒ Object
126
127
128
|
# File 'lib/conversocial/resources/query_engines/base.rb', line 126
def is_not_nil field
comparison_filter field, "isnull", 0
end
|
#last ⇒ Object
83
84
85
|
# File 'lib/conversocial/resources/query_engines/base.rb', line 83
def last
fetch.last
end
|
#less_than_or_equal_to(field, value) ⇒ Object
118
119
120
|
# File 'lib/conversocial/resources/query_engines/base.rb', line 118
def less_than_or_equal_to field, value
comparison_filter field, "lte", value
end
|
#lesser_than(field, value) ⇒ Object
114
115
116
|
# File 'lib/conversocial/resources/query_engines/base.rb', line 114
def lesser_than field, value
comparison_filter field, "lt", value
end
|
#new(params = {}) ⇒ Object
134
135
136
|
# File 'lib/conversocial/resources/query_engines/base.rb', line 134
def new params={}
new_instance_of_klass model_klass, params
end
|
#select(*fields) ⇒ Object
102
103
104
|
# File 'lib/conversocial/resources/query_engines/base.rb', line 102
def select *fields
where :fields => fields
end
|
#size ⇒ Object
Also known as:
count
77
78
79
|
# File 'lib/conversocial/resources/query_engines/base.rb', line 77
def size
fetch.size
end
|
#sort(field) ⇒ Object
Also known as:
sort_by, order, order_by
93
94
95
96
|
# File 'lib/conversocial/resources/query_engines/base.rb', line 93
def sort field
field = field.join ',' if field.kind_of? Array
where :sort => field
end
|
#to_fetch_url ⇒ Object
130
131
132
|
# File 'lib/conversocial/resources/query_engines/base.rb', line 130
def to_fetch_url
absolute_path add_query_params("", default_fetch_query_params.merge(@query_params))
end
|
#where(options) ⇒ Object
55
56
57
58
59
60
61
62
63
64
|
# File 'lib/conversocial/resources/query_engines/base.rb', line 55
def where options
options = options.map do |k, v|
v = v.utc.strftime '%Y-%m-%dT%H:%M:%S' if v.kind_of? Time
v = v.to_s if v.kind_of? Date
[k, v]
end.to_h
@query_params.merge! options
self
end
|