geekorm_core/builder/
alter.rs

1//! # Alter
2
3/// Alter mode
4#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
5pub enum AlterMode {
6    /// Add a table
7    AddTable,
8    /// Rename a table
9    RenameTable,
10    /// Drop a table
11    DropTable,
12
13    /// Add a column
14    AddColumn,
15    /// Rename a column
16    RenameColumn,
17    /// Drop a column
18    DropColumn,
19
20    /// Skip
21    Skip,
22}
23
24/// Alter query builder
25#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
26pub struct AlterQuery {
27    pub(crate) mode: AlterMode,
28
29    /// Table name
30    pub(crate) table: String,
31    /// Column name
32    pub(crate) column: String,
33    /// Rename column (if applicable)
34    pub(crate) rename: Option<String>,
35}
36
37impl AlterQuery {
38    /// Create a new alter query
39    pub fn new(mode: AlterMode, table: impl Into<String>, column: impl Into<String>) -> Self {
40        Self {
41            mode,
42            table: table.into(),
43            column: column.into(),
44            rename: None,
45        }
46    }
47
48    /// Rename the table
49    pub fn rename(&mut self, name: impl Into<String>) -> &mut Self {
50        self.rename = Some(name.into());
51        self
52    }
53
54    /// Get the table name
55    pub fn table(&self) -> &str {
56        &self.table
57    }
58}