sea_query/backend/
table_ref_builder.rs

1use crate::*;
2
3pub trait TableRefBuilder: QuotedBuilder {
4    /// Translate [`TableRef`] that without values into SQL statement.
5    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    /// Translate [`TableName`] into an SQL statement.
20    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    /// Translate [`SchemaName`] into an SQL statement.
30    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}