Select Git revision
UpdateBddCommand.php
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
UpdateBddCommand.php 1.74 KiB
<?php
namespace Unicaen\BddAdmin\Command;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Style\SymfonyStyle;
use Unicaen\BddAdmin\BddAwareTrait;
use Unicaen\BddAdmin\Data\DataManager;
use Unicaen\BddAdmin\Ddl\Ddl;
/**
* Description of UpdateBddCommand
*
* @author Laurent Lécluse <laurent.lecluse at unicaen.fr>
*/
class UpdateBddCommand extends Command
{
use BddAwareTrait;
protected function execute(InputInterface $input, OutputInterface $output): int
{
$io = new SymfonyStyle($input, $output);
$bdd = $this->getBdd()->setLogger($io);
$io->title('Mise à jour de la base de données');
$ddl = $bdd->getRefDdl();
$filters = $bdd->getFiltersForUpdateBdd($ddl);
// Initialisation et lancement de la pré-migration
//$mm = new MigrationManager($oa, $ddl, $filters);
//$mm->migration('before');
try {
$bdd->alter($ddl, $filters, true);
$io->success('Objets à jour');
} catch (\Throwable $e) {
$io->error($e->getMessage());
}
// Mise à jour des séquences
$bdd->majSequences($ddl);
// Mise à jour des données
if (!empty($bdd->data()->getSources())) {
$io->title('Contrôle et mise à jour des données');
try {
$bdd->data()->run(DataManager::ACTION_UPDATE);
$io->success('Données à jour');
} catch (\Throwable $e) {
$io->error($e->getMessage());
}
}
// Post-migration
//$mm->migration('after');
return Command::SUCCESS;
}
}