Class: ActiveRepository::ResultSet

Inherits:
Object
  • Object
show all
Defined in:
lib/active_repository/result_set.rb

Instance Method Summary collapse

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

#allObject



8
9
10
# File 'lib/active_repository/result_set.rb', line 8

def all
  @query ? get_result(@query) : @klass.all
end

#any?Boolean

Returns:

  • (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

#countObject



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

Returns:

  • (Boolean)


16
17
18
# File 'lib/active_repository/result_set.rb', line 16

def empty?
  all.empty?
end

#firstObject



44
45
46
# File 'lib/active_repository/result_set.rb', line 44

def first
  @query ? all.first : @klass.first
end

#first_or_createObject



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_initializeObject



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

#lastObject



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