Class: Brentano::Query
- Inherits:
-
Object
- Object
- Brentano::Query
- Defined in:
- lib/brentano/query.rb
Instance Attribute Summary collapse
Class Method Summary collapse
Instance Method Summary collapse
- #apply(options) ⇒ Object
-
#initialize(relation) ⇒ Query
constructor
A new instance of Query.
Constructor Details
#initialize(relation) ⇒ Query
Returns a new instance of Query.
47 48 49 |
# File 'lib/brentano/query.rb', line 47 def initialize(relation) @relation = relation end |
Instance Attribute Details
#absolute_limit ⇒ Object
43 44 45 |
# File 'lib/brentano/query.rb', line 43 def absolute_limit @absolute_limit ||= Brentano.absolute_limit end |
#allowed_methods ⇒ Object
35 36 37 |
# File 'lib/brentano/query.rb', line 35 def allowed_methods @allowed_methods ||= Brentano.allowed_methods.dup end |
#allowed_scopes ⇒ Object
39 40 41 |
# File 'lib/brentano/query.rb', line 39 def allowed_scopes @allowed_scopes ||= Brentano.allowed_scopes.dup end |
Class Method Details
.finish(relation, options) {|obj| ... } ⇒ Object
11 12 13 14 15 |
# File 'lib/brentano/query.rb', line 11 def self.finish(relation, ) obj = self.new relation yield obj if block_given? obj.apply end |
Instance Method Details
#apply(options) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/brentano/query.rb', line 17 def apply() supplied_scopes = Array.wrap([:scopes] || [:scope]) supplied_scopes << "by_#{[:by]}" if [:by].present? supplied_scopes.map!(&:to_sym) scopes = allowed_scopes & supplied_scopes scoped_relation = scopes.inject(@relation) { |r, s| r.send(s) } if absolute_limit.present? [:limit] ||= absolute_limit [:limit] = [ [:limit].to_i, absolute_limit ].min end [:offset] &&= [:offset].to_i [:limit] &&= [:limit].to_i allowed_methods.inject(scoped_relation) do |r, m| r = r.send(m, [m]) if [m].present? r end end |