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