Small code and php doc enhancements in MailPoet/Migrator

[MAILPOET-5416]
This commit is contained in:
Rostislav Wolny
2023-07-25 13:51:40 +02:00
committed by Aschepikov
parent 725d81077f
commit 871d9fd9f8
3 changed files with 9 additions and 5 deletions

View File

@ -36,7 +36,7 @@ class Migrator {
} }
foreach ($migrations as $migration) { foreach ($migrations as $migration) {
if ($migration['unknown'] || $migration['status'] === self::MIGRATION_STATUS_COMPLETED) { if (!$migration['level'] || $migration['unknown'] || $migration['status'] === self::MIGRATION_STATUS_COMPLETED) {
continue; continue;
} }

View File

@ -50,7 +50,7 @@ class Repository {
} }
/** /**
* Array of filenames. * Array of migration filenames and types.
* Db migrations are loaded first, then app migrations. This ensures that Db migrator is run before app migrations * Db migrations are loaded first, then app migrations. This ensures that Db migrator is run before app migrations
* @return array<array{level: string, name: string}> * @return array<array{level: string, name: string}>
*/ */
@ -59,13 +59,17 @@ class Repository {
$this->loadForLevel(self::MIGRATIONS_LEVEL_DB), $this->loadForLevel(self::MIGRATIONS_LEVEL_DB),
$this->loadForLevel(self::MIGRATIONS_LEVEL_APP) $this->loadForLevel(self::MIGRATIONS_LEVEL_APP)
); );
$duplicateNames = array_diff_assoc(array_column($migrations, 'name'), array_unique(array_column($migrations, 'name'))); $migrationNames = array_column($migrations, 'name');
$duplicateNames = array_diff_assoc($migrationNames, array_unique($migrationNames));
if (!empty($duplicateNames)) { if (!empty($duplicateNames)) {
throw MigratorException::duplicateMigrationNames($duplicateNames); throw MigratorException::duplicateMigrationNames($duplicateNames);
} }
return $migrations; return $migrations;
} }
/**
* @return array<array{level: string, name: string}>
*/
private function loadForLevel(string $level): array { private function loadForLevel(string $level): array {
$files = new RecursiveIteratorIterator( $files = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($this->migrationsDir . '/' . $level, RecursiveDirectoryIterator::SKIP_DOTS) new RecursiveDirectoryIterator($this->migrationsDir . '/' . $level, RecursiveDirectoryIterator::SKIP_DOTS)

View File

@ -25,7 +25,7 @@ class Runner {
$this->namespace = $this->getMigrationsNamespace(); $this->namespace = $this->getMigrationsNamespace();
} }
public function runMigration(string $name, ?string $level): void { public function runMigration(string $name, string $level): void {
$className = $this->getClassName($name, $level); $className = $this->getClassName($name, $level);
try { try {
@ -40,7 +40,7 @@ class Runner {
} }
} }
private function getClassName(string $name, ?string $level): string { private function getClassName(string $name, string $level): string {
$className = $this->namespace . '\\' . $level . '\\' . $name; $className = $this->namespace . '\\' . $level . '\\' . $name;
if (!class_exists($className)) { if (!class_exists($className)) {
throw MigratorException::migrationClassNotFound($className); throw MigratorException::migrationClassNotFound($className);