Class: Linkage::Functions::Strftime

Inherits:
Linkage::Function show all
Defined in:
lib/linkage/functions/strftime.rb

Constant Summary

Constants inherited from Data

Data::TYPE_CONVERSION_TREE

Instance Attribute Summary

Attributes inherited from Linkage::Function

#args

Attributes inherited from Data

#dataset, #name

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Linkage::Function

#==, [], #collation, #dataset, #dataset=, #initialize, #name, register, #static?

Methods inherited from Data

#collation, #database_type, #initialize, #merge, #static?

Constructor Details

This class inherits a constructor from Linkage::Function

Class Method Details

.function_nameObject



4
5
6
# File 'lib/linkage/functions/strftime.rb', line 4

def self.function_name
  "strftime"
end

.parametersObject



8
9
10
# File 'lib/linkage/functions/strftime.rb', line 8

def self.parameters
  [[Date, Time, DateTime], [String]]
end

Instance Method Details

#ruby_typeObject



12
13
14
15
# File 'lib/linkage/functions/strftime.rb', line 12

def ruby_type
  # TODO: string length needed
  {:type => String}
end

#to_expr(options = {}) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/linkage/functions/strftime.rb', line 17

def to_expr(options = {})
  expr =
    case dataset.database_type
    when :mysql
      :date_format.sql_function(*@values)
    when :sqlite
      :strftime.sql_function(@values[1], @values[0])
    when :postgres
      :to_char.sql_function(*@values)
    else
      :strftime.sql_function(@values[0], @values[1])
    end
end