From d9efdece22eec660610d4068b3c1f127a7566ea2 Mon Sep 17 00:00:00 2001 From: Bart Jaskulski <bjaskulski@protonmail.com> Date: Mon, 16 May 2022 17:45:11 +0200 Subject: [PATCH] fix: add option for setting own options name in db --- src/WpdbLogger.php | 11 +++++++---- src/WpdbMigrator.php | 20 +++++++++++++------- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/src/WpdbLogger.php b/src/WpdbLogger.php index db049c3..b0fedbd 100644 --- a/src/WpdbLogger.php +++ b/src/WpdbLogger.php @@ -8,14 +8,17 @@ use Psr\Log\LoggerTrait; class WpdbLogger implements \Psr\Log\LoggerInterface { use LoggerTrait; - private const DB_LOG = 'omnibus_db_log'; private const MAX_LOG_SIZE = 30; /** @var string[] */ private $log; - public function __construct() { - $this->log = json_decode( get_option( self::DB_LOG, '[]' ) ); + /** @var string */ + private $log_name; + + public function __construct( string $log_name ) { + $this->log_name = $log_name; + $this->log = json_decode( get_option( $this->log_name, '[]' ) ); if ( ! \is_array( $this->log ) ) { $this->log = []; } @@ -27,6 +30,6 @@ class WpdbLogger implements \Psr\Log\LoggerInterface { array_shift( $this->log ); } - update_option( self::DB_LOG, json_encode( $this->log ), false ); + update_option( $this->log_name, json_encode( $this->log ), false ); } } diff --git a/src/WpdbMigrator.php b/src/WpdbMigrator.php index bfcb23f..90f0983 100644 --- a/src/WpdbMigrator.php +++ b/src/WpdbMigrator.php @@ -11,7 +11,6 @@ use WPDesk\Migrations\Version\Version; use WPDesk\Migrations\Version\WpdbMigrationFactory; class WpdbMigrator implements Migrator { - private const DB_VERSION = 'omnibus_db_version'; /** @var \wpdb */ private $wpdb; @@ -25,13 +24,17 @@ class WpdbMigrator implements Migrator { /** @var LoggerInterface */ private $logger; + /** @var string */ + private $option_name; + /** @param string[] $migration_directories */ - public static function from_directories( array $migration_directories ): self { + public static function from_directories( array $migration_directories, string $option_name ): self { global $wpdb; - $logger = new WpdbLogger(); + $logger = new WpdbLogger( $option_name . '_log' ); return new self( $wpdb, + $option_name, new FilesystemMigrationsRepository( $migration_directories, new GlobFinder(), @@ -47,12 +50,13 @@ class WpdbMigrator implements Migrator { } /** @param class-string<AbstractMigration>[] $migration_class_names */ - public static function from_classes( array $migration_class_names ): self { + public static function from_classes( array $migration_class_names, string $option_name ): self { global $wpdb; - $logger = new WpdbLogger(); + $logger = new WpdbLogger( $option_name . '_log' ); return new self( $wpdb, + $option_name, new ArrayMigrationsRepository( $migration_class_names, new WpdbMigrationFactory( @@ -68,18 +72,20 @@ class WpdbMigrator implements Migrator { public function __construct( \wpdb $wpdb, + string $option_name, MigrationsRepository $migrations_repository, Comparator $comparator, LoggerInterface $logger ) { $this->wpdb = $wpdb; + $this->option_name = $option_name; $this->migrations_repository = $migrations_repository; $this->comparator = $comparator; $this->logger = $logger; } private function get_current_version(): Version { - return new Version( get_option( self::DB_VERSION, '' ) ); + return new Version( get_option( $this->option_name, '' ) ); } public function migrate(): void { @@ -94,7 +100,7 @@ class WpdbMigrator implements Migrator { try { $migration->get_migration()->up(); $this->logger->info( sprintf( 'DB update %s:%s -> ', $current_version, $migration->get_version() ) . 'OK' ); - update_option( self::DB_VERSION, (string) $migration->get_version(), true ); + update_option( $this->option_name, (string) $migration->get_version(), true ); } catch ( \Throwable $e ) { $error_msg = sprintf( 'Error while upgrading a database: %s', $this->wpdb->last_error ); $this->logger->error( $error_msg ); -- GitLab