Class: Axel::Querier
- Inherits:
-
Object
show all
- Defined in:
- app/models/axel/querier.rb
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(klass) ⇒ Querier
Returns a new instance of Querier.
37
38
39
40
41
42
43
44
|
# File 'app/models/axel/querier.rb', line 37
def initialize(klass)
self.klass = klass
self.records = []
self. = []
self.loaded = false
self.where_values = {}.with_indifferent_access
self.request_option_values = {}.with_indifferent_access
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method, *args, &block) ⇒ Object
156
157
158
159
160
161
162
163
164
|
# File 'app/models/axel/querier.rb', line 156
def method_missing(method, *args, &block)
if Array.method_defined?(method)
to_a.public_send(method, *args, &block)
elsif klass.routes.has_key? method
klass.public_send method, *args
else
super
end
end
|
Instance Attribute Details
#klass ⇒ Object
Returns the value of attribute klass.
17
18
19
|
# File 'app/models/axel/querier.rb', line 17
def klass
@klass
end
|
#loaded ⇒ Object
Also known as:
loaded?
Returns the value of attribute loaded.
18
19
20
|
# File 'app/models/axel/querier.rb', line 18
def loaded
@loaded
end
|
#paged ⇒ Object
Returns the value of attribute paged.
13
14
15
|
# File 'app/models/axel/querier.rb', line 13
def paged
@paged
end
|
Class Method Details
.query_methods ⇒ Object
23
24
25
26
27
28
29
30
31
32
33
34
35
|
# File 'app/models/axel/querier.rb', line 23
def self.query_methods
[
:all,
:none,
:where,
:uri,
:to_a,
:at_path,
:request_options,
:without_default_path,
:paged
]
end
|
Instance Method Details
#at_path(*paths) ⇒ Object
52
53
54
55
56
57
|
# File 'app/models/axel/querier.rb', line 52
def at_path(*paths)
return self if paths.blank?
query = clone
query. += paths
query
end
|
#inspect ⇒ Object
104
105
106
|
# File 'app/models/axel/querier.rb', line 104
def inspect
to_a.inspect
end
|
#none ⇒ Object
82
83
84
85
86
87
|
# File 'app/models/axel/querier.rb', line 82
def none
query = clone
query.loaded!
query.records = []
query
end
|
#paged? ⇒ Object
Returns the value of attribute paged.
21
22
23
|
# File 'app/models/axel/querier.rb', line 21
def paged
@paged
end
|
#reload ⇒ Object
95
96
97
98
|
# File 'app/models/axel/querier.rb', line 95
def reload
reset
self
end
|
#request_options(params = {}) ⇒ Object
Also known as:
all
74
75
76
77
78
79
|
# File 'app/models/axel/querier.rb', line 74
def request_options(params = {})
return self if params.blank? || !params.is_a?(Hash)
query = clone
query.request_option_values.deep_merge! params
query
end
|
#respond_to?(method, include_private = false) ⇒ Boolean
152
153
154
|
# File 'app/models/axel/querier.rb', line 152
def respond_to?(method, include_private = false)
super || Array.public_method_defined?(method) || klass.routes.has_key?(method)
end
|
#to_a ⇒ Object
100
101
102
|
# File 'app/models/axel/querier.rb', line 100
def to_a
Array(loaded? ? records : self.records = run_requests)
end
|
#uri(base_url) ⇒ Object
60
61
62
63
64
65
|
# File 'app/models/axel/querier.rb', line 60
def uri(base_url)
return self if base_url.blank?
query = clone
query.manual_uri = base_url.to_s
query
end
|
#where(params = {}) ⇒ Object
67
68
69
70
71
72
|
# File 'app/models/axel/querier.rb', line 67
def where(params = {})
return self if params.blank? || !params.is_a?(Hash)
query = clone
query.request_option_values.deep_merge! params: params
query
end
|
#without_default_path ⇒ Object
89
90
91
92
93
|
# File 'app/models/axel/querier.rb', line 89
def without_default_path
query = clone
query.manual_uri = klass.site
query
end
|