use crate::database::versions::ops::duplicate::Duplicate;
use crate::database::versions::ops::model::AlterColumn;
use crate::database::versions::ops::new_ref;
use crate::database::versions::ops::trigger::{Direction, Trigger};
pub(super) fn install(
op: &AlterColumn,
duplicate: &Duplicate<'_>,
latest_schema: &str,
) -> Vec<String> {
let shadow = duplicate.shadow_name();
let default_up = new_ref(&op.column);
let mut statements = Trigger {
table: &op.table,
physical_column: &shadow,
direction: Direction::Up,
expression: op.up.as_deref().unwrap_or(&default_up),
latest_schema,
rewrite: None,
}
.install();
if let Some(down) = &op.down {
let logical = op.name.as_deref().unwrap_or(&op.column);
statements.extend(
Trigger {
table: &op.table,
physical_column: &op.column,
direction: Direction::Down,
expression: down,
latest_schema,
rewrite: Some((logical, &shadow)),
}
.install(),
);
}
statements
}