qail_core/transpiler/sql/
bigquery.rs1use super::super::traits::SqlGenerator;
2
3pub struct BigQueryGenerator;
4
5impl SqlGenerator for BigQueryGenerator {
6 fn quote_identifier(&self, id: &str) -> String {
7 format!("`{}`", id.replace('`', "\\`"))
8 }
9
10 fn placeholder(&self, _index: usize) -> String {
11 "?".to_string()
12 }
13
14 fn fuzzy_operator(&self) -> &str {
15 "LIKE"
16 }
17
18 fn bool_literal(&self, val: bool) -> String {
19 if val { "true".to_string() } else { "false".to_string() }
20 }
21
22 fn string_concat(&self, parts: &[&str]) -> String {
23 format!("CONCAT({})", parts.join(", "))
25 }
26
27 fn limit_offset(&self, limit: Option<usize>, offset: Option<usize>) -> String {
28 let mut sql = String::new();
30 if let Some(n) = limit {
31 sql.push_str(&format!(" LIMIT {}", n));
32 }
33 if let Some(n) = offset {
34 sql.push_str(&format!(" OFFSET {}", n));
35 }
36 sql
37 }
38}