Class: Qdsl::Call

Inherits:
Object
  • Object
show all
Defined in:
lib/call.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(source, function_name, parameters, name = nil) ⇒ Call

Returns a new instance of Call.



5
6
7
8
9
10
# 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

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



3
4
5
# File 'lib/call.rb', line 3

def name
  @name
end

#sourceObject (readonly)

Returns the value of attribute source.



3
4
5
# File 'lib/call.rb', line 3

def source
  @source
end

Instance Method Details

#as(name) ⇒ Object



12
13
14
# File 'lib/call.rb', line 12

def as(name)
  Call.new(@source, @function_name, @parameters, name)
end

#exists?Boolean

Returns:



16
17
18
# File 'lib/call.rb', line 16

def exists?
  @parameters.all? { |x| x.exists? }
end

#render_sql(context, id) ⇒ Object



20
21
22
23
24
25
# 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