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