Class: SetBuilder::Modifiers::DateModifier

Inherits:
SetBuilder::Modifier::Adverb show all
Defined in:
lib/set_builder/modifiers/date_modifier.rb

Instance Attribute Summary

Attributes inherited from SetBuilder::Modifier::Base

#operator, #values

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from SetBuilder::Modifier::Base

#initialize, negate, to_hash, to_json, #to_s, #valid?, #valid_argument_of_type?, #valid_arguments?, #valid_date_argument?, #valid_number_argument?, #valid_operator?

Constructor Details

This class inherits a constructor from SetBuilder::Modifier::Base

Class Method Details

.operatorsObject



10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/set_builder/modifiers/date_modifier.rb', line 10

def self.operators
  {
    :ever => [],
    :before => [:date],
    :after => [:date],
    :on => [:date],
    :during_month => [:month],
    :during_year => [:year],
    :in_the_last => [:number, :period],
    :between => [:date, :date]
  }
end

Instance Method Details

#build_conditions_for(selector) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/set_builder/modifiers/date_modifier.rb', line 25

def build_conditions_for(selector)
  case operator
  when :ever
    "#{selector} IS NOT NULL"
  when :before
    "#{selector}<'#{format_value(get_date)}'"
  when :after
    "#{selector}>'#{format_value(get_date)}'"
  when :on
    "#{selector}='#{format_value(get_date)}'"
  when :during_month
    "extract(month from #{selector})=#{values[0].to_i}"
  when :during_year
    year = values[0].to_i
    return "TRUE" if year <= 0
    "#{selector} BETWEEN '#{year}-01-01' AND '#{year}-12-31'"
  when :in_the_last
    "#{selector}>='#{format_value(get_date)}'"
  when :between
    "#{selector} BETWEEN '#{format_value(Date.parse values[0])}' AND '#{format_value(Date.parse values[1])}'"
  end
end