You need to sign in or sign up before continuing.
Select Git revision
NewOseForm.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;
}
}