Skip to content

Commit

Permalink
Allow newtype pg rollback to succeed (#257)
Browse files Browse the repository at this point in the history
  • Loading branch information
jayvdb authored Apr 20, 2024
1 parent 317fb36 commit 3109517
Showing 1 changed file with 2 additions and 17 deletions.
19 changes: 2 additions & 17 deletions examples/newtype/tests/rollback.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use butane::db::{BackendConnection, Connection};
use butane::migrations::{Migration, Migrations};
use butane::migrations::Migrations;
use butane::DataObject;
use butane_test_helper::*;

Expand Down Expand Up @@ -31,27 +31,12 @@ fn migrate_and_rollback(mut connection: Connection) {
// Migrate forward.
let base_dir = std::path::PathBuf::from(".butane");
let migrations = butane_cli::get_migrations(&base_dir).unwrap();
let to_apply = migrations.unapplied_migrations(&connection).unwrap();

migrations.migrate(&mut connection).unwrap();

insert_data(&connection);

// Rollback migrations.
for migration in to_apply.iter().rev() {
if connection.backend_name() == "pg" && migration.name() == "20240401_095709389_init" {
// Postgres error db error: ERROR: cannot drop table blog because other objects depend on it
// DETAIL: constraint post_blog_fkey on table post depends on table blog
// HINT: Use DROP ... CASCADE to drop the dependent objects too.
let err = migration.downgrade(&mut connection).unwrap_err();
eprintln!("Rolled back {} failed: {err:?}", migration.name());
return;
}

migration
.downgrade(&mut connection)
.unwrap_or_else(|err| panic!("rollback of {} failed: {err}", migration.name()));
eprintln!("Rolled back {}", migration.name());
}
migrations.unmigrate(&mut connection).unwrap();
}
testall_no_migrate!(migrate_and_rollback);

0 comments on commit 3109517

Please sign in to comment.