Sha256: 0e7435e3d950999b8e6803ed2eaf335d35dcb255c4e2e8e1fb1b05e5b1bf4396

Contents?: true

Size: 834 Bytes

Versions: 1

Compression:

Stored size: 834 Bytes

Contents

module SQLTree::Node
  
  class Source < Base
    
    attr_accessor :table_reference, :joins
    
    def initialize(table_reference, joins = [])
      @table_reference, @joins = table_reference, joins
    end
    
    def table
      table_reference.table
    end

    def table_alias
      table_reference.table_alias
    end
  
    def to_sql
      sql = table_reference.to_sql
      sql << ' ' << joins.map { |j| j.to_sql }.join(' ') if joins.any?
      return sql
    end

    def ==(other)
      other.table_reference = self.table_reference && other.joins == self.joins
    end

    def self.parse(tokens)
      source = self.new(SQLTree::Node::TableReference.parse(tokens))
      while tokens.peek && tokens.peek.join?
        source.joins << SQLTree::Node::Join.parse(tokens)
      end
      return source
    end
  end 
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sql_tree-0.0.2 lib/sql_tree/node/source.rb