Refactor migrator to be a DI service

[MAILPOET-4061]
This commit is contained in:
John Oleksowicz
2022-01-27 12:14:37 -06:00
committed by Veljko V
parent ed28dcc6e6
commit 82a6fb8ac7
6 changed files with 20 additions and 10 deletions

View File

@@ -147,7 +147,7 @@ which will create a `storybook-static` folder with all necessary files. Don't fo
### DI
We use Symfony/dependency-injection container. Container configuration can be found in `libs/DI/ContainerFactory.php`
We use Symfony/dependency-injection container. Container configuration can be found in `lib/DI/ContainerFactory.php`
The container is configured and used with minimum sub-dependencies to keep final package size small.
You can check [the docs](https://symfony.com/doc/3.4/components/dependency_injection.html) to learn more about Symfony Container.

View File

@@ -19,14 +19,19 @@ class Activator {
/** @var WPFunctions */
private $wp;
/** @var Migrator */
private $migrator;
public function __construct(
SettingsController $settings,
Populator $populator,
WPFunctions $wp
WPFunctions $wp,
Migrator $migrator
) {
$this->settings = $settings;
$this->populator = $populator;
$this->wp = $wp;
$this->migrator = $migrator;
}
public function activate() {
@@ -44,8 +49,7 @@ class Activator {
}
private function processActivate(): void {
$migrator = new Migrator();
$migrator->up();
$this->migrator->up();
$this->populator->up();
$this->updateDbVersion();
@@ -55,8 +59,7 @@ class Activator {
}
public function deactivate() {
$migrator = new Migrator();
$migrator->down();
$this->migrator->down();
$caps = new Capabilities();
$caps->removeWPCapabilities();

View File

@@ -24,10 +24,14 @@ class Migrator {
public $prefix;
private $charsetCollate;
private $models;
/** @var SettingsController */
private $settings;
public function __construct() {
$this->settings = SettingsController::getInstance();
public function __construct(
SettingsController $settings
) {
$this->settings = $settings;
$this->prefix = Env::$dbPrefix;
$this->charsetCollate = Env::$dbCharsetCollate;
$this->models = [

View File

@@ -111,6 +111,7 @@ class ContainerConfigurator implements IContainerConfigurator {
$container->autowire(\MailPoet\Config\Initializer::class)->setPublic(true);
$container->autowire(\MailPoet\Config\Localizer::class);
$container->autowire(\MailPoet\Config\Menu::class)->setPublic(true);
$container->autowire(\MailPoet\Config\Migrator::class)->setPublic(true);
$container->autowire(\MailPoet\Config\MP2Migrator::class);
$container->autowire(\MailPoet\Config\RendererFactory::class)->setPublic(true);
$container->autowire(\MailPoet\Config\ServicesChecker::class)->setPublic(true);

View File

@@ -7,6 +7,7 @@ use Helper\WordPressHooks as WPHooksHelper;
use MailPoet\API\JSON\Response as APIResponse;
use MailPoet\API\JSON\v1\Setup;
use MailPoet\Config\Activator;
use MailPoet\Config\Migrator;
use MailPoet\Config\Populator;
use MailPoet\Form\FormsRepository;
use MailPoet\Referrals\ReferralDetector;
@@ -40,7 +41,8 @@ class SetupTest extends \MailPoetTest {
$this->entityManager,
$this->diContainer->get(WP::class)
);
$router = new Setup($wpStub, new Activator($settings, $populator, $wpStub));
$migrator = $this->diContainer->get(Migrator::class);
$router = new Setup($wpStub, new Activator($settings, $populator, $wpStub, $migrator));
$response = $router->reset();
expect($response->status)->equals(APIResponse::STATUS_OK);

View File

@@ -16,7 +16,7 @@ class MigratorTest extends \MailPoetTest {
public function _before() {
parent::_before();
$this->migrator = new Migrator();
$this->migrator = $this->diContainer->get(Migrator::class);
$this->settings = $this->diContainer->get(SettingsController::class);
$this->truncateEntity(DynamicSegmentFilterEntity::class);
}