class FluentQuery::Drivers::Shared::Tokens::SQL::Union

Generic SQL query UNION token.

Public Instance Methods

render!(mode = nil) click to toggle source

Renders this token.

# File lib/fluent-query/drivers/shared/tokens/sql/union.rb, line 24
def render!(mode = nil)
    result = ""

    @_subtokens.each do |token|
        arguments = token.arguments

        # SET token
        
        if token.name == :union
            length = arguments.length

            # Checks for arguments
            if length >= 2
                queries = [ ]

                arguments.each do |argument|
                    if argument.string?
                        queries << argument
                    elsif argument.kind_of? FluentQuery::Query
                        queries << argument.build!
                    end
                end
                
            else
                raise FluentQuery::Drivers::Exception::new("UNION token expects at least two queries or strings as arguments.")
            end
        end            
    end

    # Process stack with results
    queries.map! { |i| @_driver.quote_subquery(i) }
    result << queries.join(" UNION ")

    return result
end