Skip to content
Snippets Groups Projects

Ll new admin

Merged Laurent Lecluse requested to merge ll-new-admin into master
1000+ files
+ 27714
56959
Compare changes
  • Side-by-side
  • Inline
Files
1000+
<?php
if (!$oa->bddIsOk($msg)) {
$c->printDie("Impossible d'accéder à la base de données : $msg!"
. "\nVeuillez contrôler vos paramètres de configuration s'il vous plaît, avant de refaire une tentative de MAJ de la base de données (./bin/ose update-bdd).");
}
$bdd = $oa->getBdd();
$schema = new \BddAdmin\Schema($bdd);
$bdd = $oa->getBdd();
$bdd->setLogger($c);
$fichier = $oa->getOseDir().'cache/bdd-update-diff.sql';
$fichier = $oa->getOseDir() . 'cache/bdd-update-diff.sql';
$c->println("\nConstruction d'un script de mise à jour de la base de données ...", $c::COLOR_LIGHT_CYAN);
$c->println("Attention : par rapport à update-bdd, seules les définitions des objets sont concernées. Les requêtes de mise à jour des données ne sont pas générées.");
$c->begin("Construction d'un script de mise à jour de la base de données");
$c->msg("Attention : par rapport à update-bdd, seules les définitions des objets sont concernées. Les requêtes de mise à jour des données ne sont pas générées.");
/* Récupération du schéma de référence */
$ref = $schema->loadFromFile($oa->getOseDir() . 'data/ddl.php');
$ref = new BddAdmin\Ddl\Ddl;
$ref->loadFromDir($oa->getOseDir() . 'data/ddl');
/* Construction de la config de DDL pour filtrer */
$ddlConfig = require $oa->getOseDir() . 'data/ddl_config.php';
$filters = require $oa->getOseDir() . 'data/ddl_config.php';
foreach ($ref as $ddlClass => $objects) {
foreach ($objects as $object => $objectDdl) {
$ddlConfig[$ddlClass]['includes'][] = $object;
$filters[$ddlClass]['includes'][] = $object;
}
}
/* Mise à jour de la BDD */
$queries = $schema->diff($ref, false, $ddlConfig);
$sqlDdl = $schema->queriesToSql($queries);
file_put_contents($fichier, $sqlDdl);
$diff = $bdd->diff($ref, $filters);
$sql = $diff->toScript();
file_put_contents($fichier, $sql);
$c->println("Script différentiel créé et enregistré dans le fichier $fichier");
\ No newline at end of file
$c->end("Script différentiel créé et enregistré dans le fichier $fichier");
\ No newline at end of file
Loading