class ActiveRepository::ResultSet

Public Class Methods

new(klass, query={}, attributes={}) click to toggle source
# 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

Public Instance Methods

all() click to toggle source
# File lib/active_repository/result_set.rb, line 8
def all
  @query ? get_result(@query) : @klass.all
end
and(query)
Alias for: where
any?() click to toggle source
# File lib/active_repository/result_set.rb, line 20
def any?
  all.any?
end
build(attributes) click to toggle source
# File lib/active_repository/result_set.rb, line 32
def build(attributes)
  @klass.new(@attributes.merge(attributes))
end
count() click to toggle source
# File lib/active_repository/result_set.rb, line 40
def count
  all.size
end
create(attributes) click to toggle source
# File lib/active_repository/result_set.rb, line 36
def create(attributes)
  @klass.create(@attributes.merge(attributes))
end
each(&block) click to toggle source
# File lib/active_repository/result_set.rb, line 12
def each(&block)
  all.each(&block)
end
empty?() click to toggle source
# File lib/active_repository/result_set.rb, line 16
def empty?
  all.empty?
end
first() click to toggle source
# File lib/active_repository/result_set.rb, line 44
def first
  @query ? all.first : @klass.first
end
first_or_create() click to toggle source
# 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() click to toggle source
# File lib/active_repository/result_set.rb, line 48
def first_or_initialize
  object = all.first

  object ? object : @klass.new(@attributes)
end
last() click to toggle source
# File lib/active_repository/result_set.rb, line 62
def last
  @query ? all.last : @klass.last
end
map(&block) click to toggle source
# File lib/active_repository/result_set.rb, line 24
def map(&block)
  all.map(&block)
end
or(query) click to toggle source
# 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) click to toggle source
# File lib/active_repository/result_set.rb, line 28
def pluck(attribute)
  all.map(&attribute)
end
update_all(attrs) click to toggle source
# 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) click to toggle source
# 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
Also aliased as: and

Private Instance Methods

convert_query(query) click to toggle source
# File lib/active_repository/result_set.rb, line 92
def convert_query(query)
  @query = SqlQueryExecutor::Query::Normalizers::QueryNormalizer.clean_query(query)
end
get_result(args) click to toggle source
# File lib/active_repository/result_set.rb, line 96
def get_result(args)
  if @klass.repository?
    args = args.first if args.is_a?(Array) && args.size == 1
    query_executor = SqlQueryExecutor::Base.new(args)
    query_executor.execute!(@klass.all)
  else
    query = SqlQueryExecutor::Base.new(args)
    objects = PersistenceAdapter.where(@klass, query).map do |object|
      @klass.serialize!(object.attributes)
    end

    objects
  end
end
join_query(query, separator) click to toggle source
# File lib/active_repository/result_set.rb, line 111
def join_query(query, separator)
  query = SqlQueryExecutor::Query::Normalizers::QueryNormalizer.clean_query(query)
  query.blank? ? @query : (@query.blank? ? query : "(#{@query}) #{separator} (#{query})")
end