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