From 77611fb038a826771960ad8770e9adadb38691a0 Mon Sep 17 00:00:00 2001 From: NotAdam Date: Sun, 16 Jun 2019 15:33:01 +1000 Subject: [PATCH] force migration run order --- src/dbm/DbManager.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/dbm/DbManager.cpp b/src/dbm/DbManager.cpp index 6f973066..92dbccb4 100644 --- a/src/dbm/DbManager.cpp +++ b/src/dbm/DbManager.cpp @@ -394,6 +394,7 @@ bool DbManager::modeMigrate() return false; } + std::vector< std::string > migrations; for( auto& entry : fs::directory_iterator( "sql/migrations" ) ) { auto& path = entry.path(); @@ -402,6 +403,15 @@ bool DbManager::modeMigrate() if( path.extension() != ".sql" ) continue; + migrations.emplace_back( path.string() ); + } + + std::sort( migrations.begin(), migrations.end() ); + + for( auto& entry : migrations ) + { + auto path = fs::path( entry ); + if( std::find( appliedMigrations.begin(), appliedMigrations.end(), path.filename().string() ) == appliedMigrations.end() ) { Logger::info( "Applying migration: {}", path.filename().string() ); @@ -432,6 +442,8 @@ bool DbManager::modeMigrate() } } + + return true; } @@ -452,6 +464,12 @@ bool DbManager::modeAddMigration() auto path = fmt::format( "sql/migrations/{}", filename ); + if( fs::exists( path ) ) + { + Logger::error( "Migration '{}' already exists.", filename ); + return false; + } + std::ofstream mFile( path ); mFile << fmt::format( "-- Migration generated at {}", Util::fmtUtcTime( "%Y/%m/%d %H:%M:%S" ) ) << std::endl;