Skip to content
Snippets Groups Projects
Verified Commit 860ffa16 authored by Bartek Jaskulski's avatar Bartek Jaskulski
Browse files

fix: update only recent versions


Signed-off-by: default avatarBart Jaskulski <bartek.jaskulski@wpdesk.net>
parent bbe69faa
No related branches found
No related tags found
No related merge requests found
......@@ -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();
......
......@@ -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,
......
......@@ -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
}
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment