Class: ActiveRecord::Refined::AST::DatetimeValueFunction

Inherits:
Node
  • Object
show all
Includes:
Arithmetics, Predications
Defined in:
lib/active_record/refined/ast.rb

Overview

CURRENT_TIMESTAMP and its relatives, what the SQL grammar calls a datetime value function. The grammar has them bare, and PostgreSQL and SQLite reject them written as calls, so unlike Function the name is emitted without parentheses. A precision is the one thing that does go into parentheses, and it is written into the SQL as given, so only an Integer is accepted.

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Arithmetics

#&, #*, #+, #-, #/, #<<, #>>, #^, #|, #~

Methods included from Predications

#!=, #!~, #<, #<=, #==, #=~, #>, #>=, #between?, #bury, #casecmp?, #contains?, #dig, #dig_text, #distinct_from?, #end_with?, #except, #false?, #ilike?, #in?, #include?, #intersect?, #key?, #keys, #like?, #member?, #not_between?, #not_distinct_from?, #not_false?, #not_ilike?, #not_in?, #not_like?, #not_null?, #not_true?, #null?, #start_with?, #subset?, #superset?, #true?, #when

Methods inherited from Node

#as, #asc, #collate, #desc

Constructor Details

#initialize(name, precision = nil) ⇒ DatetimeValueFunction

Returns a new instance of DatetimeValueFunction.



1996
1997
1998
1999
2000
2001
2002
2003
# File 'lib/active_record/refined/ast.rb', line 1996

def initialize(name, precision = nil)
  unless precision.nil? || precision.is_a?(Integer)
    raise ArgumentError,
      "#{precision.inspect} is not an Integer precision"
  end
  @name = name
  @precision = precision
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



1994
1995
1996
# File 'lib/active_record/refined/ast.rb', line 1994

def name
  @name
end

#precisionObject (readonly)

Returns the value of attribute precision.



1994
1995
1996
# File 'lib/active_record/refined/ast.rb', line 1994

def precision
  @precision
end

Instance Method Details

#to_arel(_table, _model) ⇒ Object



2005
2006
2007
2008
# File 'lib/active_record/refined/ast.rb', line 2005

def to_arel(_table, _model)
  Arel::Nodes::SqlLiteral.new(
    precision ? "#{name}(#{precision})" : name)
end