Select Git revision
WpdbMigrator.php
-
Bartek Jaskulski authoredBartek Jaskulski authored
WpdbMigrator.php 3.46 KiB
<?php
declare(strict_types=1);
namespace WPDesk\Migrations;
use Psr\Log\LoggerInterface;
use WPDesk\Migrations\Finder\GlobFinder;
use WPDesk\Migrations\Version\AlphabeticalComparator;
use WPDesk\Migrations\Version\Comparator;
use WPDesk\Migrations\Version\Version;
use WPDesk\Migrations\Version\WpdbMigrationFactory;
class WpdbMigrator implements Migrator {
/** @var \wpdb */
private $wpdb;
/** @var MigrationsRepository */
private $migrations_repository;
/** @var Comparator */
private $comparator;
/** @var LoggerInterface */
private $logger;
/** @var string */
private $option_name;
/** @param string[] $migration_directories */
public static function from_directories( array $migration_directories, string $option_name ): self {
global $wpdb;
$logger = new WpdbLogger( $option_name . '_log' );
return new self(
$wpdb,
$option_name,
new FilesystemMigrationsRepository(
$migration_directories,
new GlobFinder(),
new WpdbMigrationFactory(
$wpdb,
$logger
),
new AlphabeticalComparator()
),
new AlphabeticalComparator(),
$logger
);
}
/** @param class-string<AbstractMigration>[] $migration_class_names */
public static function from_classes( array $migration_class_names, string $option_name ): self {
global $wpdb;
$logger = new WpdbLogger( $option_name . '_log' );
return new self(
$wpdb,
$option_name,
new ArrayMigrationsRepository(
$migration_class_names,
new WpdbMigrationFactory(
$wpdb,
$logger
),
new AlphabeticalComparator()
),
new AlphabeticalComparator(),
$logger
);