caisse-bliss/vendor/doctrine/migrations/lib/Doctrine/Migrations/Rollup.php

57 lines
1.4 KiB
PHP

<?php
declare(strict_types=1);
namespace Doctrine\Migrations;
use Doctrine\Migrations\Exception\RollupFailed;
use Doctrine\Migrations\Metadata\Storage\MetadataStorage;
use Doctrine\Migrations\Version\ExecutionResult;
use Doctrine\Migrations\Version\Version;
use function count;
/**
* The Rollup class is responsible for deleting all previously executed migrations from the versions table
* and marking the freshly dumped schema migration (that was created with SchemaDumper) as migrated.
*
* @internal
*/
class Rollup
{
private MigrationsRepository $migrationRepository;
private MetadataStorage $metadataStorage;
public function __construct(
MetadataStorage $metadataStorage,
MigrationsRepository $migrationRepository
) {
$this->migrationRepository = $migrationRepository;
$this->metadataStorage = $metadataStorage;
}
/**
* @throws RollupFailed
*/
public function rollup(): Version
{
$versions = $this->migrationRepository->getMigrations();
if (count($versions) === 0) {
throw RollupFailed::noMigrationsFound();
}
if (count($versions) > 1) {
throw RollupFailed::tooManyMigrations();
}
$this->metadataStorage->reset();
$result = new ExecutionResult($versions->getItems()[0]->getVersion());
$this->metadataStorage->complete($result);
return $result->getVersion();
}
}