1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
use crate::{Dialect, TableColumn, ToSql};
use crate::util::table_name;
#[derive(Debug)]
pub enum AlterAction {
AddColumn {
column: TableColumn,
},
}
#[derive(Debug)]
pub struct AlterTable {
pub schema: Option<String>,
pub name: String,
pub action: AlterAction,
}
impl ToSql for AlterTable {
fn to_sql(&self, dialect: Dialect) -> String {
use AlterAction::*;
let mut sql = String::new();
sql.push_str("ALTER TABLE ");
sql.push_str(&table_name(self.schema.as_ref(), &self.name, None));
match &self.action {
AddColumn { column } => {
sql.push_str(" ADD COLUMN ");
sql.push_str(&column.to_sql(dialect));
}
}
sql
}
}