class Rusql::BasicCondition

Constants

TYPES

Attributes

right[RW]
type[R]

Public Instance Methods

and(condition) click to toggle source
# File lib/rusql/basic_condition.rb, line 25
def and(condition)
  raise TypeException.new(Condition, condition.class) unless condition.is_a?(Condition)

  c = ComplexCondition.new
  c.type = :and
  c.add_condition(self)
  c.add_condition(condition)

  c
end
or(condition) click to toggle source
# File lib/rusql/basic_condition.rb, line 36
def or(condition)
  raise TypeException.new(Condition, condition.class) unless condition.is_a?(Condition)

  c = ComplexCondition.new
  c.type = :or
  c.add_condition(self)
  c.add_condition(condition)

  c
end
to_s(indent_level: 1, multiline: true) click to toggle source
# File lib/rusql/basic_condition.rb, line 47
def to_s(indent_level: 1, multiline: true) # dummy params to make it compatible with complex condition to_s
  case self.type
  when :equals
    if self.right.nil?
      "#{left.to_s} IS NULL" 
    else
      "#{left.to_s} = #{convert_value(self.right)}"
    end
  when :greater_than
    "#{left.to_s} > #{convert_value(self.right)}"
  when :greater_than_or_equals
    "#{left.to_s} >= #{convert_value(self.right)}"
  when :in
    "#{left.to_s} IN (#{ self.right.map{|v| convert_value(v) }.join(", ") })"
  when :less_than
    "#{left.to_s} < #{convert_value(self.right)}"
  when :less_than_or_equals
    "#{left.to_s} <= #{convert_value(self.right)}"
  when :like
    "#{left.to_s} LIKE #{convert_value(self.right)}"
  when :not_equals
    if self.right.nil?
      "#{left.to_s} IS NOT NULL"
    else
      "#{left.to_s} != #{convert_value(self.right)}"
    end
  when :not_in
    "#{left.to_s} NOT IN (#{ self.right.map{|v| convert_value(v) }.join(", ") })"
  end
end
type=(t) click to toggle source
# File lib/rusql/basic_condition.rb, line 19
def type=(t)
  raise Exception.new("Expected type to be one of #{ TYPES.map(&:to_s).join(", ") }") unless TYPES.include?(t)

  @type = t
end