module Aggrobot::QueryPlanner

plans queries in a Aggrobot

Public Class Methods

create(collection, group_by, opts = nil) click to toggle source

creates query object

# 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