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
40
41
42
43
|
# File 'lib/sql_beautifier/insert_query.rb', line 15
def self.parse(normalized_sql, depth: 0)
scanner = Scanner.new(normalized_sql)
return nil unless scanner.keyword_at?("insert")
scanner.skip_past_keyword!("insert")
return nil unless scanner.keyword_at?("into")
scanner.skip_past_keyword!("into")
table_name = scanner.read_identifier!
return nil unless table_name
scanner.skip_whitespace!
column_list = parse_column_list(normalized_sql, scanner)
values_rows, select_sql, on_conflict_clause, returning_clause = parse_body(normalized_sql, scanner)
return nil unless values_rows || select_sql
new(
table_name: table_name,
column_list: column_list,
values_rows: values_rows,
select_sql: select_sql,
on_conflict_clause: on_conflict_clause,
returning_clause: returning_clause,
depth: depth
)
end
|