class Qdsl::Call

Attributes

name[R]
source[R]

Public Class Methods

new(source, function_name, parameters, name = nil) click to toggle source
# File lib/call.rb, line 5
def initialize(source, function_name, parameters, name = nil)
  @source = source
  @function_name = function_name
  @parameters = parameters
  @name = name ? name.to_s : nil
end

Public Instance Methods

as(name) click to toggle source
# File lib/call.rb, line 12
def as(name)
  Call.new(@source, @function_name, @parameters, name)
end
exists?() click to toggle source
# File lib/call.rb, line 16
def exists?
  @parameters.all? { |x| x.exists? }
end
render_sql(context, id) click to toggle source
# File lib/call.rb, line 20
def render_sql(context, id)
  parameter_results = @parameters.collect { |x| x.render_sql(context, id) }
  query_parameters = parameter_results.collect(&:parameters).inject({}) { |acc, x| acc.merge!(x) }
  call = "#{@function_name}(#{parameter_results.collect(&:sql).join(', ')})"
  SimpleRenderResult.new(@name ? "#{call} AS #{@name}" : call, query_parameters)
end