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

fix: add option for setting own options name in db

parent 2aba73d3
No related branches found
No related tags found
No related merge requests found
Pipeline #8956 failed with stages
in 32 seconds
...@@ -8,14 +8,17 @@ use Psr\Log\LoggerTrait; ...@@ -8,14 +8,17 @@ use Psr\Log\LoggerTrait;
class WpdbLogger implements \Psr\Log\LoggerInterface { class WpdbLogger implements \Psr\Log\LoggerInterface {
use LoggerTrait; use LoggerTrait;
private const DB_LOG = 'omnibus_db_log';
private const MAX_LOG_SIZE = 30; private const MAX_LOG_SIZE = 30;
/** @var string[] */ /** @var string[] */
private $log; private $log;
public function __construct() { /** @var string */
$this->log = json_decode( get_option( self::DB_LOG, '[]' ) ); 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 ) ) { if ( ! \is_array( $this->log ) ) {
$this->log = []; $this->log = [];
} }
...@@ -27,6 +30,6 @@ class WpdbLogger implements \Psr\Log\LoggerInterface { ...@@ -27,6 +30,6 @@ class WpdbLogger implements \Psr\Log\LoggerInterface {
array_shift( $this->log ); array_shift( $this->log );
} }
update_option( self::DB_LOG, json_encode( $this->log ), false ); update_option( $this->log_name, json_encode( $this->log ), false );
} }
} }
...@@ -11,7 +11,6 @@ use WPDesk\Migrations\Version\Version; ...@@ -11,7 +11,6 @@ use WPDesk\Migrations\Version\Version;
use WPDesk\Migrations\Version\WpdbMigrationFactory; use WPDesk\Migrations\Version\WpdbMigrationFactory;
class WpdbMigrator implements Migrator { class WpdbMigrator implements Migrator {
private const DB_VERSION = 'omnibus_db_version';
/** @var \wpdb */ /** @var \wpdb */
private $wpdb; private $wpdb;
...@@ -25,13 +24,17 @@ class WpdbMigrator implements Migrator { ...@@ -25,13 +24,17 @@ class WpdbMigrator implements Migrator {
/** @var LoggerInterface */ /** @var LoggerInterface */
private $logger; private $logger;
/** @var string */
private $option_name;
/** @param string[] $migration_directories */ /** @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; global $wpdb;
$logger = new WpdbLogger(); $logger = new WpdbLogger( $option_name . '_log' );
return new self( return new self(
$wpdb, $wpdb,
$option_name,
new FilesystemMigrationsRepository( new FilesystemMigrationsRepository(
$migration_directories, $migration_directories,
new GlobFinder(), new GlobFinder(),
...@@ -47,12 +50,13 @@ class WpdbMigrator implements Migrator { ...@@ -47,12 +50,13 @@ class WpdbMigrator implements Migrator {
} }
/** @param class-string<AbstractMigration>[] $migration_class_names */ /** @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; global $wpdb;
$logger = new WpdbLogger(); $logger = new WpdbLogger( $option_name . '_log' );
return new self( return new self(
$wpdb, $wpdb,
$option_name,
new ArrayMigrationsRepository( new ArrayMigrationsRepository(
$migration_class_names, $migration_class_names,
new WpdbMigrationFactory( new WpdbMigrationFactory(
...@@ -68,18 +72,20 @@ class WpdbMigrator implements Migrator { ...@@ -68,18 +72,20 @@ class WpdbMigrator implements Migrator {
public function __construct( public function __construct(
\wpdb $wpdb, \wpdb $wpdb,
string $option_name,
MigrationsRepository $migrations_repository, MigrationsRepository $migrations_repository,
Comparator $comparator, Comparator $comparator,
LoggerInterface $logger LoggerInterface $logger
) { ) {
$this->wpdb = $wpdb; $this->wpdb = $wpdb;
$this->option_name = $option_name;
$this->migrations_repository = $migrations_repository; $this->migrations_repository = $migrations_repository;
$this->comparator = $comparator; $this->comparator = $comparator;
$this->logger = $logger; $this->logger = $logger;
} }
private function get_current_version(): Version { 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 { public function migrate(): void {
...@@ -94,7 +100,7 @@ class WpdbMigrator implements Migrator { ...@@ -94,7 +100,7 @@ class WpdbMigrator implements Migrator {
try { try {
$migration->get_migration()->up(); $migration->get_migration()->up();
$this->logger->info( sprintf( 'DB update %s:%s -> ', $current_version, $migration->get_version() ) . 'OK' ); $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 ) { } catch ( \Throwable $e ) {
$error_msg = sprintf( 'Error while upgrading a database: %s', $this->wpdb->last_error ); $error_msg = sprintf( 'Error while upgrading a database: %s', $this->wpdb->last_error );
$this->logger->error( $error_msg ); $this->logger->error( $error_msg );
......
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