Class: SQLTree::Node::Source

Inherits:
Base
  • Object
show all
Defined in:
lib/sql_tree/node/source.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

[], #inspect, #quote_str, #quote_var

Constructor Details

#initialize(table_reference, joins = []) ⇒ Source

Returns a new instance of Source.



7
8
9
# File 'lib/sql_tree/node/source.rb', line 7

def initialize(table_reference, joins = [])
  @table_reference, @joins = table_reference, joins
end

Instance Attribute Details

#joinsObject

Returns the value of attribute joins.



5
6
7
# File 'lib/sql_tree/node/source.rb', line 5

def joins
  @joins
end

#table_referenceObject

Returns the value of attribute table_reference.



5
6
7
# File 'lib/sql_tree/node/source.rb', line 5

def table_reference
  @table_reference
end

Class Method Details

.parse(tokens) ⇒ Object



29
30
31
32
33
34
35
# File 'lib/sql_tree/node/source.rb', line 29

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

Instance Method Details

#==(other) ⇒ Object



25
26
27
# File 'lib/sql_tree/node/source.rb', line 25

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

#tableObject



11
12
13
# File 'lib/sql_tree/node/source.rb', line 11

def table
  table_reference.table
end

#table_aliasObject



15
16
17
# File 'lib/sql_tree/node/source.rb', line 15

def table_alias
  table_reference.table_alias
end

#to_sqlObject



19
20
21
22
23
# File 'lib/sql_tree/node/source.rb', line 19

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