Class: Aggrobot::QueryPlanner::DefaultQueryPlanner

Inherits:
Object
  • Object
show all
Includes:
ParametersValidator
Defined in:
lib/aggrobot/query_planner/default_query_planner.rb

Instance Method Summary collapse

Methods included from ParametersValidator

#validate_and_extract_relation, #validate_options

Constructor Details

#initialize(collection, group = DEFAULT_GROUP_BY) ⇒ DefaultQueryPlanner

Returns a new instance of DefaultQueryPlanner.



6
7
8
# 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

Instance Method Details

#query_results(extra_cols = []) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
# 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) ⇒ Object



10
11
12
13
14
15
16
# 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