class PeriodicCalculations::QueryOptions

Constants

INTERVAL_UNIT
OPERATION

Attributes

cumulative[R]
interval_unit[R]
operation[R]
target_column[R]
timestamp_column[R]
timezone_offset[R]
window_end[R]
window_start[R]

Public Class Methods

new(operation, column_name, window_start, window_end, options = {}) click to toggle source
# File lib/periodic_calculations/query_options.rb, line 15
def initialize(operation, column_name, window_start, window_end, options = {})
  @operation = operation
  @target_column = column_name
  @timestamp_column = options[:timestamp_column] || :created_at
  @window_start = window_start
  @window_end = window_end
  @interval_unit = options[:interval_unit] || :day
  @cumulative = !!options[:cumulative]
  @timezone_offset = Time.now.in_time_zone.utc_offset

  validate!
end

Private Instance Methods

validate!() click to toggle source
# File lib/periodic_calculations/query_options.rb, line 30
def validate!
  validate_operation!
  validate_target_column!
  validate_window!
  validate_interval_unit!
end
validate_interval_unit!() click to toggle source
# File lib/periodic_calculations/query_options.rb, line 55
def validate_interval_unit!
  unless INTERVAL_UNIT.include?(@interval_unit)
    raise ArgumentError.new("Invalid interval unit")
  end
end
validate_operation!() click to toggle source
# File lib/periodic_calculations/query_options.rb, line 37
def validate_operation!
  unless OPERATION.include?(@operation)
    raise ArgumentError.new("Invalid operation")
  end
end
validate_target_column!() click to toggle source
# File lib/periodic_calculations/query_options.rb, line 43
def validate_target_column!
  unless @target_column.present?
    raise ArgumentError.new("Target column name must be present")
  end
end
validate_window!() click to toggle source
# File lib/periodic_calculations/query_options.rb, line 49
def validate_window!
  unless window_start.is_a?(Time) && window_end.is_a?(Time)
    raise ArgumentError.new("Invalid Time window")
  end
end