Module: ActiveRecord::Temporal::Querying::TimeDimensions

Extended by:
ActiveSupport::Concern
Defined in:
lib/activerecord/temporal/querying/time_dimensions.rb

Instance Method Summary collapse

Instance Method Details

#set_time_dimension(value, dimension = nil) ⇒ Object



52
53
54
55
56
57
58
59
60
# File 'lib/activerecord/temporal/querying/time_dimensions.rb', line 52

def set_time_dimension(value, dimension = nil)
  dimension ||= default_time_dimension

  if !time_dimension_column?(dimension)
    raise ArgumentError, "no time dimension column '#{dimension}'"
  end

  send("#{dimension}=", value)
end

#set_time_dimension_end(value, dimension = nil) ⇒ Object



70
71
72
73
74
75
76
# File 'lib/activerecord/temporal/querying/time_dimensions.rb', line 70

def set_time_dimension_end(value, dimension = nil)
  existing_value = time_dimension(dimension)

  new_value = existing_value ? existing_value.begin...value : nil...value

  set_time_dimension(new_value, dimension)
end

#set_time_dimension_start(value, dimension = nil) ⇒ Object



62
63
64
65
66
67
68
# File 'lib/activerecord/temporal/querying/time_dimensions.rb', line 62

def set_time_dimension_start(value, dimension = nil)
  existing_value = time_dimension(dimension)

  new_value = existing_value ? value...existing_value.end : value...nil

  set_time_dimension(new_value, dimension)
end

#time_dimension(dimension = nil) ⇒ Object



34
35
36
37
38
39
40
41
42
# File 'lib/activerecord/temporal/querying/time_dimensions.rb', line 34

def time_dimension(dimension = nil)
  dimension ||= default_time_dimension

  if !time_dimension_column?(dimension)
    raise ArgumentError, "no time dimension column '#{dimension}'"
  end

  send(dimension)
end

#time_dimension_end(dimension = nil) ⇒ Object



48
49
50
# File 'lib/activerecord/temporal/querying/time_dimensions.rb', line 48

def time_dimension_end(dimension = nil)
  time_dimension(dimension)&.end
end

#time_dimension_start(dimension = nil) ⇒ Object



44
45
46
# File 'lib/activerecord/temporal/querying/time_dimensions.rb', line 44

def time_dimension_start(dimension = nil)
  time_dimension(dimension)&.begin
end