#[derive(Debug, Clone)]
pub struct Migration {
pub id: String,
pub description: String,
pub up_sql: String,
pub down_sql: String,
}
#[derive(Debug, Clone)]
pub struct ModelSnapshot {
pub migration_id: String,
pub entity_types: Vec<SnapshotEntityType>,
}
#[derive(Debug, Clone, Default)]
pub struct SnapshotEntityType {
pub type_name: String,
pub table_name: String,
pub columns: Vec<SnapshotColumn>,
pub indexes: Vec<SnapshotIndex>,
pub foreign_keys: Vec<SnapshotForeignKey>,
pub checks: Vec<SnapshotCheck>,
pub table_options: SnapshotTableOptions,
pub is_view: bool,
pub is_keyless: bool,
pub comment: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Eq, Default)]
pub struct SnapshotIndexColumn {
pub value: String,
pub is_expression: bool,
}
#[derive(Debug, Clone, PartialEq, Eq, Default)]
pub struct SnapshotIndex {
pub name: String,
pub columns: Vec<SnapshotIndexColumn>,
pub is_unique: bool,
pub filter: Option<String>,
pub include: Vec<String>,
}
#[derive(Debug, Clone, PartialEq, Eq, Default)]
pub struct SnapshotForeignKey {
pub name: String,
pub columns: Vec<String>,
pub referenced_table: String,
pub referenced_columns: Vec<String>,
pub on_delete: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Eq, Default)]
pub struct SnapshotCheck {
pub name: String,
pub expression: String,
}
#[derive(Debug, Clone, PartialEq, Eq, Default)]
pub struct SnapshotTableOptions {
pub engine: Option<String>,
pub charset: Option<String>,
pub collate: Option<String>,
}
impl SnapshotTableOptions {
pub fn is_empty(&self) -> bool {
self.engine.is_none() && self.charset.is_none() && self.collate.is_none()
}
}
#[derive(Debug, Clone, PartialEq, Default)]
pub struct SnapshotColumn {
pub field_name: String,
pub column_name: String,
pub type_name: String,
pub is_primary_key: bool,
pub is_required: bool,
pub is_foreign_key: bool,
pub max_length: Option<usize>,
pub is_auto_increment: bool,
pub is_sequence: bool,
pub sequence_name: Option<String>,
pub fk_referenced_table: Option<String>,
pub fk_referenced_column: Option<String>,
pub has_index: bool,
pub is_unique: bool,
pub fk_on_delete: Option<String>,
pub default_value: Option<String>,
pub column_type: Option<String>,
pub precision: Option<u32>,
pub scale: Option<u32>,
pub is_fixed_length: bool,
pub collation: Option<String>,
pub comment: Option<String>,
pub computed_sql: Option<String>,
pub computed_stored: bool,
}