use crate::{
db::Driver,
schema::{db, diff},
};
use super::Snapshot;
#[derive(Debug)]
pub struct Generated {
pub migration: db::Migration,
pub snapshot: Snapshot,
}
pub fn generate(
driver: &dyn Driver,
previous: &db::Schema,
next: &db::Schema,
rename_hints: &diff::RenameHints,
) -> Option<Generated> {
let schema_diff = diff::Schema::from(previous, next, rename_hints);
if schema_diff.is_empty() {
return None;
}
Some(Generated {
migration: driver.generate_migration(&schema_diff),
snapshot: Snapshot::new(next.clone()),
})
}