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