class SQL::Maker::SelectSet

Constants

FNOP

Attributes

name_sep[RW]
new_line[RW]
operator[RW]
order_by[RW]
quote_char[RW]
statements[RW]

Public Class Methods

new(args = {}) click to toggle source
# File lib/sql/maker/select_set.rb, line 23
def initialize(args = {})
  croak("Missing mandatory parameter 'operator' for SQL::Maker::SelectSet.new") unless args[:operator]
  @new_line = args[:new_line] || "\n"
  @operator = args[:operator]
  @quote_char = args[:quote_char]
  @name_sep = args[:name_sep]
  @statements = []
  @order_by = []
end

Public Instance Methods

_quote(label) click to toggle source
# File lib/sql/maker/select_set.rb, line 51
def _quote(label)
  SQL::Maker::Util.quote_identifier(label, self.quote_char, self.name_sep)
end
add_order_by(*args) click to toggle source
# File lib/sql/maker/select_set.rb, line 73
def add_order_by(*args)
  col, type = parse_args(*args)
  self.order_by += [[col, type]]
  self # method chain
end
add_statement(statement) click to toggle source
# File lib/sql/maker/select_set.rb, line 33
def add_statement(statement)
  unless statement.respond_to?(:as_sql)
    croak( "'statement' doesn't have 'as_sql' method.")
  end
  self.statements.push statement
  self # method chain
end
as_sql() click to toggle source
# File lib/sql/maker/select_set.rb, line 55
def as_sql
  new_line = self.new_line
  operator = self.operator

  sql = self.statements.map {|st| st.as_sql }.join(new_line + operator + new_line)
  sql += ' ' + self.as_sql_order_by unless self.order_by.empty?
  sql
end
Also aliased as: to_s
as_sql_order_by() click to toggle source
# File lib/sql/maker/select_set.rb, line 41
def as_sql_order_by
  attrs = self.order_by
  return '' if attrs.empty?

  return 'ORDER BY ' + attrs.map {|e|
    col, type = e
    type ? self._quote(col) + " #{type}" : self._quote(col)
  }.join(', ')
end
bind() click to toggle source
# File lib/sql/maker/select_set.rb, line 65
def bind
  bind = []
  self.statements.each do |select|
    bind += select.bind
  end
  bind
end
to_s()
Alias for: as_sql