33 lines
1,001 B
PHP
33 lines
1,001 B
PHP
<?php
|
|
|
|
namespace Nest\Cli\Commands\Migrations;
|
|
|
|
use Nest\Application;
|
|
use Nest\Cli\Commands\CommandHandler;
|
|
use Nest\Cli\Out;
|
|
use Nest\Database\Migrations\Migration;
|
|
use Nest\Database\Exceptions\Migrations\MigrationNotFoundException;
|
|
use Throwable;
|
|
|
|
class RollbackCommand extends CommandHandler
|
|
{
|
|
/**
|
|
* @throws MigrationNotFoundException
|
|
* @throws Throwable
|
|
*/
|
|
public function __invoke(): void
|
|
{
|
|
Application::get()->migrations()->onRollbackStart = function (Migration $migration) {
|
|
Out::print("Starting to roll back V{$migration->getVersion()} ".Out::BOLD_ATTRIBUTE."{$migration->getName()}".Out::RESET_ATTRIBUTES);
|
|
echo " ".Out::ITALIC_ATTRIBUTE.$migration->getDescription().Out::RESET_ATTRIBUTES."\n\n";
|
|
};
|
|
|
|
// Rollback latest migration.
|
|
$migration = Application::get()->migrations()->load()->rollbackLatest();
|
|
|
|
if (!empty($migration))
|
|
Out::success("Rolled back V{$migration->getVersion()} {$migration->getName()}");
|
|
else
|
|
Out::warning("Nothing to rollback.");
|
|
}
|
|
}
|