From 17094f56ebe2bc073aff0b57834de0f383f95f03 Mon Sep 17 00:00:00 2001 From: fipwmaqzufheoxq92ebc <29818044+fipwmaqzufheoxq92ebc@users.noreply.github.com> Date: Sat, 29 Aug 2020 19:15:02 +0200 Subject: [PATCH] Run database-Migrations in right order (#973) --- services/DatabaseMigrationService.php | 41 +++++++++++---------------- 1 file changed, 16 insertions(+), 25 deletions(-) diff --git a/services/DatabaseMigrationService.php b/services/DatabaseMigrationService.php index 104bba80..c84da137 100644 --- a/services/DatabaseMigrationService.php +++ b/services/DatabaseMigrationService.php @@ -6,37 +6,28 @@ class DatabaseMigrationService extends BaseService { public function MigrateDatabase() { - $this->getDatabaseService()->ExecuteDbStatement("CREATE TABLE IF NOT EXISTS migrations (migration INTEGER NOT NULL PRIMARY KEY UNIQUE, execution_time_timestamp DATETIME DEFAULT (datetime('now', 'localtime')))"); + $this->getDatabaseService()->ExecuteDbStatement("CREATE TABLE IF NOT EXISTS migrations (migration INTEGER NOT NULL PRIMARY KEY UNIQUE, execution_time_timestamp DATETIME DEFAULT (datetime('now', 'localtime')))"); - $sqlMigrationFiles = array(); + $migrationFiles = array(); foreach (new \FilesystemIterator(__DIR__ . '/../migrations') as $file) { - if ($file->getExtension() === 'sql') - { - $sqlMigrationFiles[$file->getBasename('.sql')] = $file->getPathname(); - } + $migrationFiles[$file->getBasename()] = $file; } - ksort($sqlMigrationFiles); - foreach($sqlMigrationFiles as $migrationNumber => $migrationFile) + ksort($migrationFiles); + foreach($migrationFiles as $migrationKey => $migrationFile) { - $migrationNumber = ltrim($migrationNumber, '0'); - $this->ExecuteSqlMigrationWhenNeeded($migrationNumber, file_get_contents($migrationFile)); - } + if($migrationFile->getExtension() === 'php') + { + $migrationNumber = ltrim($migrationFile->getBasename('.php'), '0'); + $this->ExecutePhpMigrationWhenNeeded($migrationNumber, $migrationFile->getPathname()); + } + else if($migrationFile->getExtension() === 'sql') + { + $migrationNumber = ltrim($migrationFile->getBasename('.sql'), '0'); + $this->ExecuteSqlMigrationWhenNeeded($migrationNumber, file_get_contents($migrationFile->getPathname())); + } - $phpMigrationFiles = array(); - foreach (new \FilesystemIterator(__DIR__ . '/../migrations') as $file) - { - if ($file->getExtension() === 'php') - { - $phpMigrationFiles[$file->getBasename('.php')] = $file->getPathname(); - } - } - ksort($phpMigrationFiles); - foreach($phpMigrationFiles as $migrationNumber => $migrationFile) - { - $migrationNumber = ltrim($migrationNumber, '0'); - $this->ExecutePhpMigrationWhenNeeded($migrationNumber, $migrationFile); - } + } } private function ExecuteSqlMigrationWhenNeeded(int $migrationId, string $sql)