Class: SqlBeautifier::UpdateQuery

Inherits:
Base
  • Object
show all
Includes:
DmlRendering
Defined in:
lib/sql_beautifier/update_query.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.parse(normalized_sql, depth: 0) ⇒ Object



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
39
# File 'lib/sql_beautifier/update_query.rb', line 14

def self.parse(normalized_sql, depth: 0)
  scanner = Scanner.new(normalized_sql)
  return nil unless scanner.keyword_at?("update")

  scanner.skip_past_keyword!("update")

  table_name = scanner.read_identifier!
  return nil unless table_name

  scanner.skip_whitespace!
  return nil unless scanner.keyword_at?("set")

  scanner.skip_past_keyword!("set")

  clauses = split_update_clauses(normalized_sql, scanner.position)
  return nil unless clauses[:assignments]

  new(
    table_name: table_name,
    assignments: clauses[:assignments],
    from_clause: clauses[:from_clause],
    where_clause: clauses[:where_clause],
    returning_clause: clauses[:returning_clause],
    depth: depth
  )
end

Instance Method Details

#render ⇒ Object



41
42
43
44
45
46
47
48
49
50
# File 'lib/sql_beautifier/update_query.rb', line 41

def render
  output = +""
  output << render_update
  output << render_assignments
  output << render_from if @from_clause
  output << render_where if @where_clause
  output << render_returning if @returning_clause

  "#{output}\n"
end