Method: Aggrobot::QueryPlanner.create

Defined in:
lib/aggrobot/query_planner.rb

.create(collection, group_by, opts = nil) ⇒ Object

creates query object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/aggrobot/query_planner.rb', line 11

def self.create(collection, group_by, opts = nil)
  case
  when opts.nil?
    DefaultQueryPlanner.new(collection, group_by)
  when opts.key?(:limit_to)
    # GROUP attrs by 'group_by' with limit
    GroupLimitQueryPlanner.new(collection, group_by, opts)
  when opts.key?(:buckets)
    # GROUP attrs by 'group_by' in buckets of opts[:buckets], e.g. 1..100, 101..200 etc
    BucketedGroupsQueryPlanner.new(collection, group_by, opts)
  else
    raise ArgumentError.new "Invalid options to group_by : #{opts}"
  end
end