Class: ActiveRepository::ResultSet
- Inherits:
-
Object
- Object
- ActiveRepository::ResultSet
- Defined in:
- lib/active_repository/result_set.rb
Instance Method Summary collapse
- #all ⇒ Object
- #any? ⇒ Boolean
- #build(attributes) ⇒ Object
- #count ⇒ Object
- #create(attributes) ⇒ Object
- #each(&block) ⇒ Object
- #empty? ⇒ Boolean
- #first ⇒ Object
- #first_or_create ⇒ Object
- #first_or_initialize ⇒ Object
-
#initialize(klass, query = {}, attributes = {}) ⇒ ResultSet
constructor
A new instance of ResultSet.
- #last ⇒ Object
- #map(&block) ⇒ Object
- #or(query) ⇒ Object
- #pluck(attribute) ⇒ Object
- #update_all(attrs) ⇒ Object
- #where(query) ⇒ Object (also: #and)
Constructor Details
#initialize(klass, query = {}, attributes = {}) ⇒ ResultSet
Returns a new instance of ResultSet.
2 3 4 5 6 |
# File 'lib/active_repository/result_set.rb', line 2 def initialize(klass, query={}, attributes={}) @klass = klass convert_query(query) @attributes = attributes.merge(SqlQueryExecutor::Query::Normalizers::QueryNormalizer.attributes_from_query(query)) end |
Instance Method Details
#all ⇒ Object
8 9 10 |
# File 'lib/active_repository/result_set.rb', line 8 def all @query ? get_result(@query) : @klass.all end |
#any? ⇒ Boolean
20 21 22 |
# File 'lib/active_repository/result_set.rb', line 20 def any? all.any? end |
#build(attributes) ⇒ Object
32 33 34 |
# File 'lib/active_repository/result_set.rb', line 32 def build(attributes) @klass.new(@attributes.merge(attributes)) end |
#count ⇒ Object
40 41 42 |
# File 'lib/active_repository/result_set.rb', line 40 def count all.size end |
#create(attributes) ⇒ Object
36 37 38 |
# File 'lib/active_repository/result_set.rb', line 36 def create(attributes) @klass.create(@attributes.merge(attributes)) end |
#each(&block) ⇒ Object
12 13 14 |
# File 'lib/active_repository/result_set.rb', line 12 def each(&block) all.each(&block) end |
#empty? ⇒ Boolean
16 17 18 |
# File 'lib/active_repository/result_set.rb', line 16 def empty? all.empty? end |
#first ⇒ Object
44 45 46 |
# File 'lib/active_repository/result_set.rb', line 44 def first @query ? all.first : @klass.first end |
#first_or_create ⇒ Object
54 55 56 57 58 59 60 |
# File 'lib/active_repository/result_set.rb', line 54 def first_or_create object = first_or_initialize object.new_record? ? object.save : object object.reload end |
#first_or_initialize ⇒ Object
48 49 50 51 52 |
# File 'lib/active_repository/result_set.rb', line 48 def first_or_initialize object = all.first object ? object : @klass.new(@attributes) end |
#last ⇒ Object
62 63 64 |
# File 'lib/active_repository/result_set.rb', line 62 def last @query ? all.last : @klass.last end |
#map(&block) ⇒ Object
24 25 26 |
# File 'lib/active_repository/result_set.rb', line 24 def map(&block) all.map(&block) end |
#or(query) ⇒ Object
74 75 76 77 78 |
# File 'lib/active_repository/result_set.rb', line 74 def or(query) query = join_query(query, 'or') ActiveRepository::ResultSet.new(@klass, query, @attributes) end |
#pluck(attribute) ⇒ Object
28 29 30 |
# File 'lib/active_repository/result_set.rb', line 28 def pluck(attribute) all.map(&attribute) end |
#update_all(attrs) ⇒ Object
80 81 82 83 84 85 86 87 88 89 |
# File 'lib/active_repository/result_set.rb', line 80 def update_all(attrs) if @klass.repository? @klass.where(@query).each do |record| record.update_attributes(attrs) end else query = SqlQueryExecutor::Base.new(@query) PersistenceAdapter.where(@klass, query).update_all(attrs) end end |
#where(query) ⇒ Object Also known as: and
66 67 68 69 70 71 |
# File 'lib/active_repository/result_set.rb', line 66 def where(query) @attributes = @attributes.merge(SqlQueryExecutor::Query::Normalizers::QueryNormalizer.attributes_from_query(query)) query = join_query(query, 'and') ActiveRepository::ResultSet.new(@klass, query, @attributes) end |