class Aggrobot::QueryPlanner::DefaultQueryPlanner
Public Class Methods
new(collection, group = DEFAULT_GROUP_BY)
click to toggle source
# File lib/aggrobot/query_planner/default_query_planner.rb, line 6 def initialize(collection, group = DEFAULT_GROUP_BY) @collection, @group = validate_and_extract_relation(collection), group end
Public Instance Methods
query_results(extra_cols = [])
click to toggle source
# File lib/aggrobot/query_planner/default_query_planner.rb, line 18 def query_results(extra_cols = []) return [] if collection_is_none? if @group.is_a? Array columns = @group + [SQLFunctions.count] + extra_cols results_query.pluck(*columns).collect do |result_row| [result_row[0..(@group.count - 1)]] + result_row[@group.count..-1] end else columns = [@group, SQLFunctions.count] + extra_cols results_query.pluck(*columns) end end
sub_query(group_value)
click to toggle source
# File lib/aggrobot/query_planner/default_query_planner.rb, line 10 def sub_query(group_value) if @group == DEFAULT_GROUP_BY @collection else @collection.where(group_condition(group_value)) end end
Protected Instance Methods
collection_is_none?()
click to toggle source
# File lib/aggrobot/query_planner/default_query_planner.rb, line 45 def collection_is_none? @collection.extending_values.include?(ActiveRecord::NullRelation) end
group_condition(group_value)
click to toggle source
# File lib/aggrobot/query_planner/default_query_planner.rb, line 33 def group_condition(group_value) if @group.is_a?(Array) Hash[@group.zip(group_value)] else {@group => group_value} end end
results_query()
click to toggle source
# File lib/aggrobot/query_planner/default_query_planner.rb, line 41 def results_query @result_query ||= @collection.group(@group) end