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
|