class MongoQL::Expression::ValueNode

Constants

SUPPORTED_TYPES

Attributes

value[RW]

Public Class Methods

new(val) click to toggle source
# File lib/mongo_ql/expression/value_node.rb, line 14
def initialize(val)
  Expression::ValueNode.valid!(val)
  @value = val
  convert_to_date_if_possible
end
valid!(value) click to toggle source
# File lib/mongo_ql/expression/value_node.rb, line 42
def self.valid!(value)
  unless value.nil? || valid?(value)
    raise InvalidValueExpression, "#{value} must be in type #{SUPPORTED_TYPES.map(&:name).join(",")}"
  end
end
valid?(value) click to toggle source
# File lib/mongo_ql/expression/value_node.rb, line 38
def self.valid?(value)
  SUPPORTED_TYPES.any? { |type| value.is_a?(type) }
end

Public Instance Methods

convert_to_date_if_possible() click to toggle source
# File lib/mongo_ql/expression/value_node.rb, line 32
def convert_to_date_if_possible
  self.value = DateTime.iso8601(value)
rescue => _
  value
end
to_ast() click to toggle source
# File lib/mongo_ql/expression/value_node.rb, line 20
def to_ast
  case value
  when Date, DateTime
    # Expression::ValueNode.new(value.iso8601).to_date.to_ast
    { "$toDate" => value.iso8601 }
  when MongoQL::Expression::ValueNode
    value.to_ast
  else
    value
  end
end