Class: SqlBeautifier::CreateTable

Inherits:
Base
  • Object
show all
Extended by:
CreateTableParsing
Defined in:
lib/sql_beautifier/create_table.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from CreateTableParsing

detect_if_not_exists?, detect_modifier, extended, skip_past_if_not_exists!

Class Method Details

.parse(normalized_sql) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/sql_beautifier/create_table.rb', line 12

def self.parse(normalized_sql, **)
  scanner = Scanner.new(normalized_sql)
  return nil unless scanner.keyword_at?("create")

  scanner.skip_past_keyword!("create")
  modifier = detect_modifier(scanner)
  scanner.skip_past_keyword!(modifier) if modifier

  return nil unless scanner.keyword_at?("table")

  scanner.skip_past_keyword!("table")

  if_not_exists = detect_if_not_exists?(scanner)
  skip_past_if_not_exists!(scanner) if if_not_exists

  table_name = scanner.read_identifier!
  return nil unless table_name

  scanner.skip_whitespace!
  return nil if scanner.finished?
  return nil unless scanner.current_char == Constants::OPEN_PARENTHESIS

  column_definitions = extract_column_definitions(normalized_sql, scanner)
  return nil unless column_definitions

  new(modifier: modifier, if_not_exists: if_not_exists, table_name: table_name, column_definitions: column_definitions)
end

Instance Method Details

#render ⇒ Object



55
56
57
58
59
60
61
62
63
# File 'lib/sql_beautifier/create_table.rb', line 55

def render
  parts = [Util.format_keyword("create")]
  parts << Util.format_keyword(@modifier) if @modifier
  parts << Util.format_keyword("table")
  parts << "#{Util.format_keyword('if')} #{Util.format_keyword('not')} #{Util.format_keyword('exists')}" if @if_not_exists
  parts << Util.format_table_name(@table_name)

  "#{parts.join(' ')} (#{@column_definitions})\n"
end