use super::schema::{Column, ForeignKey, Index, Table};
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum TableChange {
CreateTable(Table),
DropTable {
table_name: String,
},
AlterTable {
table_name: String,
column_changes: Vec<ColumnAlteration>,
added_columns: Vec<Column>,
removed_columns: Vec<String>,
added_indexes: Vec<Index>,
removed_indexes: Vec<String>,
added_foreign_keys: Vec<ForeignKey>,
removed_foreign_keys: Vec<String>,
},
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum ColumnAlteration {
AddColumn(Column),
RemoveColumn {
column_name: String,
},
ModifyColumn {
column_name: String,
new_column: Column,
},
RenameColumn {
old_name: String,
new_name: String,
},
TypeChanged {
column_name: String,
old_type: crate::migration::schema::ColumnType,
new_type: crate::migration::schema::ColumnType,
},
NullabilityChanged {
column_name: String,
old_nullable: bool,
new_nullable: bool,
},
DefaultChanged {
column_name: String,
old_default: Option<String>,
new_default: Option<String>,
},
}