Sha256: f0e7ab1c2af7e8584252db606108f7ff835a629fe1159e656603ea1e07e2aeea

Contents?: true

Size: 817 Bytes

Versions: 2

Compression:

Stored size: 817 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

2 entries across 2 versions & 1 rubygems

Version Path
sql_tree-0.1.0 lib/sql_tree/node/source.rb
sql_tree-0.0.3 lib/sql_tree/node/source.rb