From 860ffa163dfabe6076a6e213f714a60916d6ef9b Mon Sep 17 00:00:00 2001 From: Bart Jaskulski <bartek.jaskulski@wpdesk.net> Date: Mon, 12 Dec 2022 15:13:53 +0100 Subject: [PATCH] fix: update only recent versions Signed-off-by: Bart Jaskulski <bartek.jaskulski@wpdesk.net> --- src/AbstractMigrationsRepository.php | 1 + src/Version/WpdbMigrationFactory.php | 5 +++++ src/WpdbMigrator.php | 10 ++++++++-- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/AbstractMigrationsRepository.php b/src/AbstractMigrationsRepository.php index 674d896..5f1c81b 100644 --- a/src/AbstractMigrationsRepository.php +++ b/src/AbstractMigrationsRepository.php @@ -41,6 +41,7 @@ abstract class AbstractMigrationsRepository implements MigrationsRepository { $this->migrations[ (string) $version ] = new AvailableMigration( $version, $migration ); } + /** @return iterable<AvailableMigration> */ public function get_migrations(): iterable { $this->load_migrations(); diff --git a/src/Version/WpdbMigrationFactory.php b/src/Version/WpdbMigrationFactory.php index 8594e3a..91b63aa 100644 --- a/src/Version/WpdbMigrationFactory.php +++ b/src/Version/WpdbMigrationFactory.php @@ -19,6 +19,11 @@ class WpdbMigrationFactory implements MigrationFactory { $this->logger = $logger; } + /** + * @param class-string<AbstractMigration> $migration_class + * + * @return AbstractMigration + */ public function create_version( string $migration_class ): AbstractMigration { return new $migration_class( $this->wpdb, diff --git a/src/WpdbMigrator.php b/src/WpdbMigrator.php index f32a02d..c3166e2 100644 --- a/src/WpdbMigrator.php +++ b/src/WpdbMigrator.php @@ -111,16 +111,22 @@ class WpdbMigrator implements Migrator { $current_version = $this->get_current_version(); foreach ( $this->migrations_repository->get_migrations() as $migration ) { - if ( $this->comparator->compare( $migration->get_version(), $this->get_current_version() ) ) { + if ( + $this->comparator->compare( + $migration->get_version(), + $this->get_current_version() + ) === 1 + ) { $this->logger->info( sprintf( 'DB update %s:%s', $current_version, $migration->get_version() ) ); try { $migration->get_migration()->up(); $this->logger->info( sprintf( 'DB update %s:%s -> ', $current_version, $migration->get_version() ) . 'OK' ); update_option( $this->option_name, (string) $migration->get_version(), true ); } catch ( \Throwable $e ) { + // @phpstan-ignore-next-line $error_msg = sprintf( 'Error while upgrading a database: %s', $this->wpdb->last_error ); $this->logger->error( $error_msg ); - trigger_error( $error_msg, E_USER_WARNING ); + trigger_error( $error_msg, E_USER_WARNING ); // phpcs:ignore } } } -- GitLab