use toolu_orm_cli::migrate::EmbeddedMigration;
use toolu_orm_core::journal::compute_hash;
pub const CREATE_SQL: &str = "CREATE TABLE users (id TEXT PRIMARY KEY);\n\
--> statement-breakpoint\nCREATE TABLE audit (id TEXT);";
pub const FAILING_SQL: &str =
"CREATE TABLE half (id TEXT);\n--> statement-breakpoint\nINSERT INTO nope VALUES (1);";
pub const MAKE_T_SQL: &str = "CREATE TABLE t (id TEXT);";
pub const SEED_T_SQL: &str = "INSERT INTO t (id) VALUES ('seeded');";
pub struct OwnedMigration {
pub name: String,
pub sql: String,
pub hash: String,
}
#[must_use]
pub fn honest(name: &str, sql: &str) -> OwnedMigration {
OwnedMigration {
name: name.to_owned(),
sql: sql.to_owned(),
hash: compute_hash(sql),
}
}
#[must_use]
pub fn tampered(name: &str, original: &str, edited: &str) -> OwnedMigration {
OwnedMigration {
name: name.to_owned(),
sql: edited.to_owned(),
hash: compute_hash(original),
}
}
#[must_use]
pub fn list(migrations: &[OwnedMigration]) -> Vec<EmbeddedMigration<'_>> {
migrations
.iter()
.map(|m| EmbeddedMigration {
name: &m.name,
sql: &m.sql,
hash: &m.hash,
})
.collect()
}
#[must_use]
pub fn as_files(migrations: &[OwnedMigration]) -> Vec<(&str, &str)> {
migrations
.iter()
.map(|m| (m.name.as_str(), m.sql.as_str()))
.collect()
}