use super::publish;
use crate::database::migrations::CustomMigrationError;
use crate::database::versions::ops::{backfill, Plan};
use crate::database::versions::{exec, stored_plan};
use crate::database::DatabaseConnection;
pub(super) async fn apply(
connection: &DatabaseConnection,
schema: &str,
version: &str,
plan: &Plan,
) -> Result<Vec<String>, CustomMigrationError> {
for statement in &plan.statements {
exec::run(connection, statement, &[]).await?;
}
let mut backfilled = Vec::new();
for table in &plan.backfill_tables {
backfill::run(connection, table, backfill::DEFAULT_BATCH_SIZE).await?;
backfilled.push(table.clone());
}
publish::publish(connection, schema, version, &plan.renames).await?;
stored_plan::save(connection, version, plan).await?;
Ok(backfilled)
}