Select Git revision
HydratorAwareTrait.php
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
UpdateBddCommand.php 2.21 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\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');
$io->info('Mise à jour des définitions de la base de données. Merci de patienter ...');
$ref = $bdd->getRefDdl();
// Construction de la config de DDL pour filtrer
$filters = [];
foreach ($ref as $ddlClass => $objects) {
foreach ($objects as $object => $objectDdl) {
$filters[$ddlClass]['includes'][] = $object;
}
}
$tablesDep = [
Ddl::INDEX,
Ddl::PRIMARY_CONSTRAINT,
Ddl::REF_CONSTRAINT,
Ddl::UNIQUE_CONSTRAINT,
];
foreach ($tablesDep as $tableDep) {
$objects = $bdd->manager($tableDep)->get();
foreach ($objects as $obj) {
if (in_array($obj['table'], $filters['table']['includes'])) {
$filters[$tableDep]['includes'][] = $obj['name'];
}
}
}
// Initialisation et lancement de la pré-migration
//$mm = new MigrationManager($oa, $ref, $filters);
//$mm->migration('before');
// Mise à jour de la BDD (structures)
$bdd->alter($ref, $filters, true);
// Mise à jour des séquences
$bdd->majSequences($ref);
// Mise à jour des données
//$bdd->logBegin('Contrôle et mise à jour des données');
//$bdd->dataUpdater()->run('update');
//$bdd->logEnd('Données à jour');
// Post-migration
//$mm->migration('after');
return Command::SUCCESS;
}
}