From f2aa8d5c15d8cd1c081a3c549c675ee697b15247 Mon Sep 17 00:00:00 2001 From: Hayodea Hekol Date: Thu, 11 Jun 2026 19:29:19 -0400 Subject: [PATCH] db_createfrom: Don't exec pre-/post-migration scripts --- cmake/scripts/cppbessotDbActionCommon.cmake | 50 ++++++++++++++++++++- cmake/scripts/run_db_createfrom.cmake | 2 +- cmake/scripts/run_db_migrate.cmake | 2 +- 3 files changed, 51 insertions(+), 3 deletions(-) diff --git a/cmake/scripts/cppbessotDbActionCommon.cmake b/cmake/scripts/cppbessotDbActionCommon.cmake index e870a99..3d7e292 100644 --- a/cmake/scripts/cppbessotDbActionCommon.cmake +++ b/cmake/scripts/cppbessotDbActionCommon.cmake @@ -104,8 +104,56 @@ function(cppbessot_db_action_collect_nonempty_sql_files out_var sql_dir) set(${out_var} "${_sql_files}" PARENT_SCOPE) endfunction() +function(cppbessot_db_action_is_migration_sql_file out_var sql_file) + get_filename_component(_filename "${sql_file}" NAME) + if("${_filename}" MATCHES "-[0-9]+-(pre|post)\\.sql$") + set(${out_var} TRUE PARENT_SCOPE) + return() + endif() + set(${out_var} FALSE PARENT_SCOPE) +endfunction() + +function(cppbessot_db_action_collect_schema_sql_files out_var sql_dir) + cppbessot_db_action_collect_nonempty_sql_files(_candidate_files "${sql_dir}") + set(_sql_files) + foreach(_candidate IN LISTS _candidate_files) + cppbessot_db_action_is_migration_sql_file(_is_migration_sql "${_candidate}") + if(NOT _is_migration_sql) + list(APPEND _sql_files "${_candidate}") + endif() + endforeach() + set(${out_var} "${_sql_files}" PARENT_SCOPE) +endfunction() + +function(cppbessot_db_action_migration_sort_key out_var sql_file) + get_filename_component(_filename "${sql_file}" NAME) + string(REGEX REPLACE "-([0-9]+)-pre\\.sql$" "-\\1-0-pre.sql" _sort_key "${_filename}") + string(REGEX REPLACE "-([0-9]+)-post\\.sql$" "-\\1-1-post.sql" _sort_key "${_sort_key}") + set(${out_var} "${_sort_key}" PARENT_SCOPE) +endfunction() + +function(cppbessot_db_action_collect_migration_sql_files out_var sql_dir) + cppbessot_db_action_collect_nonempty_sql_files(_candidate_files "${sql_dir}") + set(_keyed_files) + foreach(_candidate IN LISTS _candidate_files) + cppbessot_db_action_is_migration_sql_file(_is_migration_sql "${_candidate}") + if(_is_migration_sql) + cppbessot_db_action_migration_sort_key(_sort_key "${_candidate}") + list(APPEND _keyed_files "${_sort_key}|${_candidate}") + endif() + endforeach() + + list(SORT _keyed_files) + set(_sql_files) + foreach(_keyed_file IN LISTS _keyed_files) + string(REGEX REPLACE "^[^|]+\\|" "" _sql_file "${_keyed_file}") + list(APPEND _sql_files "${_sql_file}") + endforeach() + set(${out_var} "${_sql_files}" PARENT_SCOPE) +endfunction() + function(cppbessot_db_action_require_nonempty_sql_dir sql_dir failure_prefix) - cppbessot_db_action_collect_nonempty_sql_files(_sql_files "${sql_dir}") + cppbessot_db_action_collect_schema_sql_files(_sql_files "${sql_dir}") if(NOT _sql_files) message(FATAL_ERROR "${failure_prefix}: no non-empty SQL files found under ${sql_dir}") endif() diff --git a/cmake/scripts/run_db_createfrom.cmake b/cmake/scripts/run_db_createfrom.cmake index b082d38..4ae82c7 100644 --- a/cmake/scripts/run_db_createfrom.cmake +++ b/cmake/scripts/run_db_createfrom.cmake @@ -26,7 +26,7 @@ set(_ddl_dir "${_schema_dir}/generated-sql-ddl/${_backend_subdir}") cppbessot_db_action_require_nonempty_sql_dir( "${_ddl_dir}" "db_createfrom cannot continue") -cppbessot_db_action_collect_nonempty_sql_files(_sql_files "${_ddl_dir}") +cppbessot_db_action_collect_schema_sql_files(_sql_files "${_ddl_dir}") if("${_backend}" STREQUAL "sqlite") cppbessot_db_action_reset_sqlite_db("${_sqlite_path}") diff --git a/cmake/scripts/run_db_migrate.cmake b/cmake/scripts/run_db_migrate.cmake index 89db6cf..d0767f5 100644 --- a/cmake/scripts/run_db_migrate.cmake +++ b/cmake/scripts/run_db_migrate.cmake @@ -29,7 +29,7 @@ cppbessot_db_action_prepare_proddev( cppbessot_db_action_backend_subdir(_backend_subdir "${_backend}") cppbessot_db_action_get_migration_dir_path(_migration_dir "${DB_MIGRATE_WITH}") set(_sql_dir "${_migration_dir}/${_backend_subdir}") -cppbessot_db_action_collect_nonempty_sql_files(_sql_files "${_sql_dir}") +cppbessot_db_action_collect_migration_sql_files(_sql_files "${_sql_dir}") cppbessot_db_action_get_hook_path(_pre_hook "${_migration_dir}" "pre-structural-backfill.sh") cppbessot_db_action_get_hook_path(_post_hook "${_migration_dir}" "post-structural-backfill.sh")