1use crate::SchemaBuilder;
12
13mod alter;
14mod column;
15mod create;
16mod drop;
17mod rename;
18mod truncate;
19
20pub use alter::*;
21pub use column::*;
22pub use create::*;
23pub use drop::*;
24pub use rename::*;
25pub use truncate::*;
26
27#[derive(Debug)]
29pub struct Table;
30
31#[derive(Debug, Clone)]
33pub enum TableStatement {
34 Create(TableCreateStatement),
35 Alter(TableAlterStatement),
36 Drop(TableDropStatement),
37 Rename(TableRenameStatement),
38 Truncate(TableTruncateStatement),
39}
40
41impl Table {
42 pub fn create() -> TableCreateStatement {
44 TableCreateStatement::new()
45 }
46
47 pub fn alter() -> TableAlterStatement {
49 TableAlterStatement::new()
50 }
51
52 pub fn drop() -> TableDropStatement {
54 TableDropStatement::new()
55 }
56
57 pub fn rename() -> TableRenameStatement {
59 TableRenameStatement::new()
60 }
61
62 pub fn truncate() -> TableTruncateStatement {
64 TableTruncateStatement::new()
65 }
66}
67
68impl TableStatement {
69 pub fn build<T: SchemaBuilder>(&self, table_builder: T) -> String {
71 match self {
72 Self::Create(stat) => stat.build(table_builder),
73 Self::Alter(stat) => stat.build(table_builder),
74 Self::Drop(stat) => stat.build(table_builder),
75 Self::Rename(stat) => stat.build(table_builder),
76 Self::Truncate(stat) => stat.build(table_builder),
77 }
78 }
79
80 pub fn build_any(&self, table_builder: &dyn SchemaBuilder) -> String {
82 match self {
83 Self::Create(stat) => stat.build_any(table_builder),
84 Self::Alter(stat) => stat.build_any(table_builder),
85 Self::Drop(stat) => stat.build_any(table_builder),
86 Self::Rename(stat) => stat.build_any(table_builder),
87 Self::Truncate(stat) => stat.build_any(table_builder),
88 }
89 }
90
91 pub fn to_string<T: SchemaBuilder>(&self, table_builder: T) -> String {
93 match self {
94 Self::Create(stat) => stat.to_string(table_builder),
95 Self::Alter(stat) => stat.to_string(table_builder),
96 Self::Drop(stat) => stat.to_string(table_builder),
97 Self::Rename(stat) => stat.to_string(table_builder),
98 Self::Truncate(stat) => stat.to_string(table_builder),
99 }
100 }
101}