Class: AuxiliaryRails::Application::Query
- Inherits:
-
Object
- Object
- AuxiliaryRails::Application::Query
show all
- Extended by:
- Dry::Core::ClassAttributes, Dry::Initializer
- Defined in:
- lib/auxiliary_rails/application/query.rb
Class Method Summary
collapse
Instance Method Summary
collapse
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method_name, *args, &block) ⇒ Object
30
31
32
33
34
|
# File 'lib/auxiliary_rails/application/query.rb', line 30
def method_missing(method_name, *args, &block)
super unless query.respond_to?(method_name)
query.send(method_name, *args, &block)
end
|
Class Method Details
.call(*args) ⇒ Object
14
15
16
|
# File 'lib/auxiliary_rails/application/query.rb', line 14
def self.call(*args)
new(*args).call
end
|
Instance Method Details
#call ⇒ Object
18
19
20
21
22
23
24
|
# File 'lib/auxiliary_rails/application/query.rb', line 18
def call
ensure_proper_relation_types!
perform
query
end
|
#ensure_proper_relation_types! ⇒ Object
rubocop:disable Metrics/AbcSize, Style/GuardClause
43
44
45
46
47
48
49
50
51
52
53
|
# File 'lib/auxiliary_rails/application/query.rb', line 43
def ensure_proper_relation_types!
if self.class.default_relation.nil?
error!('Undefined `default_relation`')
end
if !queriable_object?(self.class.default_relation)
error!('Invalid class of `default_relation`')
end
if !relation.nil? && !queriable_object?(relation)
error!('Invalid class of `relation` option')
end
end
|
#error!(message = nil) ⇒ Object
rubocop:enable Metrics/AbcSize, Style/GuardClause
56
57
58
59
|
# File 'lib/auxiliary_rails/application/query.rb', line 56
def error!(message = nil)
raise error_class,
"`#{self.class}` #{message || 'Query raised an error.'}"
end
|
#error_class ⇒ Object
61
62
63
|
# File 'lib/auxiliary_rails/application/query.rb', line 61
def error_class
AuxiliaryRails::Application::Error
end
|
26
27
28
|
# File 'lib/auxiliary_rails/application/query.rb', line 26
def perform
raise NotImplementedError
end
|
#queriable_object?(object) ⇒ Boolean
65
66
67
|
# File 'lib/auxiliary_rails/application/query.rb', line 65
def queriable_object?(object)
object.is_a?(ActiveRecord::Relation)
end
|
#query(scoped_query = nil) ⇒ Object
69
70
71
72
73
74
75
|
# File 'lib/auxiliary_rails/application/query.rb', line 69
def query(scoped_query = nil)
@query ||= (relation || self.class.default_relation)
@query = scoped_query unless scoped_query.nil?
@query
end
|
#respond_to_missing?(method_name, include_private = false) ⇒ Boolean
36
37
38
|
# File 'lib/auxiliary_rails/application/query.rb', line 36
def respond_to_missing?(method_name, include_private = false)
query.respond_to?(method_name) || super
end
|