class Flounder::Expression::Expr

Public Class Methods

new(domain) click to toggle source
# File lib/flounder/expression.rb, line 4
def initialize domain
  @domain = domain
end

Public Instance Methods

&(expr) click to toggle source
# File lib/flounder/expression.rb, line 17
def & expr
  BinaryOp.new(@domain, 'AND', self, expr)
end
as(name) click to toggle source
# File lib/flounder/expression.rb, line 8
def as name
  Named.new(@domain, name, self)
end
cast(type) click to toggle source
# File lib/flounder/expression.rb, line 11
def cast type
  Cast.new(@domain, type, self)
end
db_quote(something) click to toggle source
# File lib/flounder/expression.rb, line 36
def db_quote something
  @domain.with_connection do |conn|
    conn.quote(something)
  end
end
eval(argument) click to toggle source
# File lib/flounder/expression.rb, line 21
def eval argument
  case argument
    when String, Symbol
      db_quote(argument.to_s)
    when Fixnum
      argument
    when Expr
      argument.to_sql
    when Flounder::Field
      argument.fully_qualified_name
  else 
    db_quote(argument)
  end
end
to_immediate() click to toggle source
# File lib/flounder/expression.rb, line 45
def to_immediate
  Flounder::Immediate.new(to_sql)
end
to_sql() click to toggle source
# File lib/flounder/expression.rb, line 42
def to_sql
  raise NotImplementedError
end
|(expr) click to toggle source
# File lib/flounder/expression.rb, line 14
def | expr
  BinaryOp.new(@domain, 'OR', self, expr)
end