Skip to content

Commit

Permalink
add continueOrReset migration strategy
Browse files Browse the repository at this point in the history
  • Loading branch information
matej21 committed Feb 28, 2018
1 parent 0466f3a commit e966303
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 0 deletions.
3 changes: 3 additions & 0 deletions src/Bridges/NetteDI/DatabaseCreatorExtension.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
use Mangoweb\Tester\DatabaseCreator\Drivers\PostgreSqlDatabaseDriver;
use Mangoweb\Tester\DatabaseCreator\IDbal;
use Mangoweb\Tester\DatabaseCreator\Mutex;
use Mangoweb\Tester\DatabaseCreator\Strategies\ContinueOrResetDatabaseStrategy;
use Mangoweb\Tester\DatabaseCreator\Strategies\ResetDatabaseStrategy;
use Mangoweb\Tester\DatabaseCreator\Strategies\TemplateDatabaseStrategy;
use Nette\DI\CompilerExtension;
Expand Down Expand Up @@ -95,6 +96,8 @@ private function registerStrategy($strategy): void
$def->setFactory(TemplateDatabaseStrategy::class, [TemplateDatabaseStrategy::DEFAULT_FORMAT]);
} elseif ($strategy === 'reset') {
$def->setFactory(ResetDatabaseStrategy::class);
} elseif ($strategy === 'continueOrReset') {
$def->setFactory(ContinueOrResetDatabaseStrategy::class);
} else {
$def->setFactory($strategy);
}
Expand Down
35 changes: 35 additions & 0 deletions src/Strategies/ContinueOrResetDatabaseStrategy.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<?php declare(strict_types = 1);

namespace Mangoweb\Tester\DatabaseCreator\Strategies;

use Mangoweb\Tester\DatabaseCreator\CannotContinueMigrationException;
use Mangoweb\Tester\DatabaseCreator\Drivers\IDatabaseDriver;
use Mangoweb\Tester\DatabaseCreator\IMigrationsDriver;


class ContinueOrResetDatabaseStrategy implements IDatabaseCreationStrategy
{
/** @var IDatabaseDriver */
private $databaseDriver;

/** @var IMigrationsDriver */
private $migrationsDriver;


public function __construct(IDatabaseDriver $databaseDriver, IMigrationsDriver $migrationsDriver)
{
$this->databaseDriver = $databaseDriver;
$this->migrationsDriver = $migrationsDriver;
}


public function prepareDatabase(string $name): void
{
$this->databaseDriver->connectToDatabase($name);
try {
$this->migrationsDriver->continue();
} catch (CannotContinueMigrationException $e) {
$this->migrationsDriver->reset();
}
}
}

0 comments on commit e966303

Please sign in to comment.