sea_query/backend/
table_ref_builder.rs1use crate::*;
2
3pub trait TableRefBuilder: QuotedBuilder {
4 fn prepare_table_ref_iden(&self, table_ref: &TableRef, sql: &mut dyn SqlWriter) {
6 let (table_name, alias) = match table_ref {
7 TableRef::Table(table_name, alias) => (table_name, alias),
8 TableRef::SubQuery(_, _)
9 | TableRef::ValuesList(_, _)
10 | TableRef::FunctionCall(_, _) => panic!("TableRef with values is not support"),
11 };
12 self.prepare_table_name(table_name, sql);
13 if let Some(alias) = alias {
14 sql.write_str(" AS ").unwrap();
15 self.prepare_iden(alias, sql);
16 }
17 }
18
19 fn prepare_table_name(&self, table_name: &TableName, sql: &mut dyn SqlWriter) {
21 let TableName(schema_name, table) = table_name;
22 if let Some(schema_name) = schema_name {
23 self.prepare_schema_name(schema_name, sql);
24 sql.write_str(".").unwrap();
25 }
26 self.prepare_iden(table, sql);
27 }
28
29 fn prepare_schema_name(&self, schema_name: &SchemaName, sql: &mut dyn SqlWriter) {
31 let SchemaName(database_name, schema) = schema_name;
32 if let Some(DatabaseName(database)) = database_name {
33 self.prepare_iden(database, sql);
34 write!(sql, ".").unwrap();
35 }
36 self.prepare_iden(schema, sql);
37 }
38}