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
89
90
91
92
|
# File 'lib/conversocial/resources/query_engines/base.rb', line 89
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
76
77
|
# 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
108
109
110
|
# File 'lib/conversocial/resources/query_engines/base.rb', line 108
def greater_than field, value
comparison_filter field, "gt", value
end
|
#greater_than_or_equal_to(field, value) ⇒ Object
112
113
114
|
# File 'lib/conversocial/resources/query_engines/base.rb', line 112
def greater_than_or_equal_to field, value
comparison_filter field, "gte", value
end
|
#is_nil(field) ⇒ Object
124
125
126
|
# File 'lib/conversocial/resources/query_engines/base.rb', line 124
def is_nil field
comparison_filter field, "isnull", 1
end
|
#is_not_nil(field) ⇒ Object
128
129
130
|
# File 'lib/conversocial/resources/query_engines/base.rb', line 128
def is_not_nil field
comparison_filter field, "isnull", 0
end
|
#last ⇒ Object
85
86
87
|
# File 'lib/conversocial/resources/query_engines/base.rb', line 85
def last
fetch.last
end
|
#less_than_or_equal_to(field, value) ⇒ Object
120
121
122
|
# File 'lib/conversocial/resources/query_engines/base.rb', line 120
def less_than_or_equal_to field, value
comparison_filter field, "lte", value
end
|
#lesser_than(field, value) ⇒ Object
116
117
118
|
# File 'lib/conversocial/resources/query_engines/base.rb', line 116
def lesser_than field, value
comparison_filter field, "lt", value
end
|
#new(params = {}) ⇒ Object
136
137
138
|
# File 'lib/conversocial/resources/query_engines/base.rb', line 136
def new params={}
new_instance_of_klass model_klass, params
end
|
#select(*fields) ⇒ Object
104
105
106
|
# File 'lib/conversocial/resources/query_engines/base.rb', line 104
def select *fields
where :fields => fields
end
|
#size ⇒ Object
Also known as:
count
79
80
81
|
# File 'lib/conversocial/resources/query_engines/base.rb', line 79
def size
fetch.size
end
|
#sort(field) ⇒ Object
Also known as:
sort_by, order, order_by
95
96
97
98
|
# File 'lib/conversocial/resources/query_engines/base.rb', line 95
def sort field
field = field.join ',' if field.kind_of? Array
where :sort => field
end
|
#to_fetch_url ⇒ Object
132
133
134
|
# File 'lib/conversocial/resources/query_engines/base.rb', line 132
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
|