mirror of
https://github.com/grocy/grocy.git
synced 2025-08-20 20:26:42 +00:00
Run database-Migrations in right order (#973)
This commit is contained in:
committed by
GitHub
parent
0f499c69d9
commit
17094f56eb
@@ -6,37 +6,28 @@ class DatabaseMigrationService extends BaseService
|
|||||||
{
|
{
|
||||||
public function MigrateDatabase()
|
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)
|
foreach (new \FilesystemIterator(__DIR__ . '/../migrations') as $file)
|
||||||
{
|
{
|
||||||
if ($file->getExtension() === 'sql')
|
$migrationFiles[$file->getBasename()] = $file;
|
||||||
{
|
|
||||||
$sqlMigrationFiles[$file->getBasename('.sql')] = $file->getPathname();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
ksort($sqlMigrationFiles);
|
ksort($migrationFiles);
|
||||||
foreach($sqlMigrationFiles as $migrationNumber => $migrationFile)
|
foreach($migrationFiles as $migrationKey => $migrationFile)
|
||||||
{
|
{
|
||||||
$migrationNumber = ltrim($migrationNumber, '0');
|
if($migrationFile->getExtension() === 'php')
|
||||||
$this->ExecuteSqlMigrationWhenNeeded($migrationNumber, file_get_contents($migrationFile));
|
{
|
||||||
}
|
$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)
|
private function ExecuteSqlMigrationWhenNeeded(int $migrationId, string $sql)
|
||||||
|
Reference in New Issue
Block a user