module Rollup::Utils

Constants

DATE_INTERVALS

Public Class Methods

adapter_name() click to toggle source
# File lib/rollup/utils.rb, line 35
def adapter_name
  Rollup.connection.adapter_name
end
check_dimensions() click to toggle source
# File lib/rollup/utils.rb, line 31
def check_dimensions
  raise "Dimensions not supported" unless dimensions_supported?
end
date_interval?(interval) click to toggle source
# File lib/rollup/utils.rb, line 20
def date_interval?(interval)
  DATE_INTERVALS.include?(interval.to_s)
end
dimensions_supported?() click to toggle source
# File lib/rollup/utils.rb, line 24
def dimensions_supported?
  unless defined?(@dimensions_supported)
    @dimensions_supported = postgresql? && Rollup.column_names.include?("dimensions")
  end
  @dimensions_supported
end
make_series(result, interval) click to toggle source
# File lib/rollup/utils.rb, line 51
def make_series(result, interval)
  series = {}
  if Utils.date_interval?(interval)
    result.each do |row|
      series[row[0].to_date] = row[1]
    end
  else
    time_zone = Rollup.time_zone
    if result.any? && result[0][0].is_a?(Time)
      result.each do |row|
        series[row[0].in_time_zone(time_zone)] = row[1]
      end
    else
      utc = ActiveSupport::TimeZone["Etc/UTC"]
      result.each do |row|
        # row can be time or string
        series[utc.parse(row[0]).in_time_zone(time_zone)] = row[1]
      end
    end
  end
  series
end
mysql?() click to toggle source
# File lib/rollup/utils.rb, line 43
def mysql?
  adapter_name =~ /mysql/i
end
postgresql?() click to toggle source
# File lib/rollup/utils.rb, line 39
def postgresql?
  adapter_name =~ /postg/i
end
sqlite?() click to toggle source
# File lib/rollup/utils.rb, line 47
def sqlite?
  adapter_name =~ /sqlite/i
end
time_sql(interval) click to toggle source
# File lib/rollup/utils.rb, line 6
def time_sql(interval)
  if date_interval?(interval)
    if postgresql?
      "rollups.time::date"
    elsif sqlite?
      "date(rollups.time)"
    else
      "CAST(rollups.time AS date)"
    end
  else
    :time
  end
end