Skip to content

Commit

Permalink
🐛 prevent error on rollback when no event previously defined
Browse files Browse the repository at this point in the history
  • Loading branch information
Odonno committed Jun 30, 2023
1 parent fe39fb5 commit 7a52c23
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 8 deletions.
18 changes: 14 additions & 4 deletions src/apply.rs
Original file line number Diff line number Diff line change
Expand Up @@ -574,11 +574,21 @@ fn get_rollback_statements(
next_statements_str: &str,
previous_statements_str: &str,
) -> Result<String> {
let next_statements = ::surrealdb::sql::parse(next_statements_str)?;
let next_statements = next_statements.0 .0;
let next_statements = match next_statements_str.is_empty() {
true => vec![],
false => {
let next_statements = ::surrealdb::sql::parse(next_statements_str)?;
next_statements.0 .0
}
};

let previous_statements = ::surrealdb::sql::parse(previous_statements_str)?;
let previous_statements = previous_statements.0 .0;
let previous_statements = match previous_statements_str.is_empty() {
true => vec![],
false => {
let previous_statements = ::surrealdb::sql::parse(previous_statements_str)?;
previous_statements.0 .0
}
};

let next_tables_statements = extract_define_table_statements(next_statements.clone());
let previous_tables_statements = extract_define_table_statements(previous_statements.clone());
Expand Down
31 changes: 31 additions & 0 deletions tests/cli/apply/down.rs
Original file line number Diff line number Diff line change
Expand Up @@ -78,3 +78,34 @@ Migration files successfully executed!\n",
})
.await
}

#[tokio::test]
#[serial]
async fn apply_and_revert_on_empty_template() -> Result<()> {
run_with_surreal_instance_async(|| {
Box::pin(async {
clear_tests_files()?;
scaffold_empty_template()?;

add_post_migration_file()?;
let first_migration_name = get_first_migration_name()?;
write_post_migration_down_file(&first_migration_name)?;

apply_migrations()?;

let mut cmd = create_cmd()?;

cmd.arg("apply").arg("--down").arg("0");

cmd.assert().try_success().and_then(|assert| {
assert.try_stdout(
"Reverting migration AddPost...
Migration files successfully executed!\n",
)
})?;

Ok(())
})
})
.await
}
8 changes: 4 additions & 4 deletions tests/helpers/io.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,11 @@ pub fn clear_tests_files() -> Result<()> {
}

pub fn empty_folder(folder: &str) -> Result<()> {
let migrations_files_dir = Path::new(folder);
let files_dir = Path::new(folder);

if migrations_files_dir.exists() {
fs::remove_dir_all(migrations_files_dir)?;
fs::create_dir(migrations_files_dir)?;
if files_dir.exists() {
fs::remove_dir_all(files_dir)?;
fs::create_dir(files_dir)?;
}

Ok(())
Expand Down

0 comments on commit 7a52c23

Please sign in to comment.