Skip to content
Snippets Groups Projects
Commit 0a8c23f1 authored by Laurent Lecluse's avatar Laurent Lecluse
Browse files

Merge branch 'refs/heads/modernisation-gestion-donnees'

# Conflicts:
#	.gitlab-ci.yml
#	CHANGELOG.md
parents 8d91f554 b9741a20
No related branches found
No related tags found
No related merge requests found
Showing
with 1196 additions and 207 deletions
branche modernisation-gestion-donnees
-------------------------------------
- [Fix] Test de comparaison des float & doubles tenant compte des problématiques d'arrondis de PHP
- Dans le Table->merge, possibilité de définir une requête personnalisée pour les cas complexes
0.9.9 (12/09/2024)
------------------
- [Fix] Correction des tests unitaires qui doivent passer
- Possibilité de configurer les tests unitaires via un fichier dnas config/autoload de l'appli pour éviter qu'il soit supprimé à chaque MAJ composer
- [Fix] Correction d'un bug lors du changement de nombre de caractères sur des character varying lors d'un update de DDL
0.9.10 (15/10/2024) 0.9.10 (15/10/2024)
------------------ ------------------
......
...@@ -9,13 +9,6 @@ use Laminas\Mvc\MvcEvent; ...@@ -9,13 +9,6 @@ use Laminas\Mvc\MvcEvent;
*/ */
class Module class Module
{ {
public function onBootstrap(MvcEvent $e)
{
}
public function getConfig() public function getConfig()
{ {
return include __DIR__ . '/config/module.config.php'; return include __DIR__ . '/config/module.config.php';
......
<?php <?php
return []; namespace Unicaen\BddAdmin;
\ No newline at end of file
return [
'unicaen-bddadmin' => [
'connection' => [
],
'current_connection' => 'default',
'ddl' => [
'dir' => 'data/ddl',
'columns_positions_file' => 'data/ddl_columns_pos.php',
'filters' => [],
'update-bdd-filters' => [],
'update-ddl-filters' => [],
'init-update-bdd-filters' => true,
],
'data' => [
'actions' => [
'install' => 'Insertion des données',
'update' => 'Contrôle et mise à jour des données',
],
'config' => [], // configuration par tables
'sources' => [],
],
'migration' => [
// array des classes ou services utilisés pour la migration [index => classe ou service, ...]
],
'id_column' => 'id',
'histo' => [
'user_id' => null,
'histo_creation_column' => 'histo_creation',
'histo_modification_column' => 'histo_modification',
'histo_destruction_column' => 'histo_destruction',
'histo_createur_id_column' => 'histo_createur_id',
'histo_modificateur_id_column' => 'histo_modificateur_id',
'histo_destructeur_id_column' => 'histo_destructeur_id',
],
'import' => [
'source_id' => null,
'source_id_column' => 'source_id',
'source_code_column' => 'source_code',
],
],
'service_manager' => [
'factories' => [
Bdd::class => BddFactory::class,
Command\InstallCommand::class => Command\CommandFactory::class,
Command\UpdateCommand::class => Command\CommandFactory::class,
Command\UpdateDdlCommand::class => Command\CommandFactory::class,
Command\UpdateDataCommand::class => Command\CommandFactory::class,
Command\ClearCommand::class => Command\CommandFactory::class,
Command\CopyToCommand::class => Command\CommandFactory::class,
Command\CopyFromCommand::class => Command\CommandFactory::class,
Command\LoadCommand::class => Command\CommandFactory::class,
Command\SaveCommand::class => Command\CommandFactory::class,
],
],
'laminas-cli' => [
'commands' => [
'bddadmin:install' => Command\InstallCommand::class,
'bddadmin:update' => Command\UpdateCommand::class,
'bddadmin:clear' => Command\ClearCommand::class,
'bddadmin:update-ddl' => Command\UpdateDdlCommand::class,
'bddadmin:update-data' => Command\UpdateDataCommand::class,
'bddadmin:copy-to' => Command\CopyToCommand::class,
'bddadmin:copy-from' => Command\CopyFromCommand::class,
'bddadmin:load' => Command\LoadCommand::class,
'bddadmin:save' => Command\SaveCommand::class,
],
],
];
\ No newline at end of file
<?php
/*
* Fichier à copier/coller dans config/autoload/unicaen-bddadmin.global.php
*
* Les options commentées ici sont placées pour illustrer les valeurs par défaut
* A décommenter et modifier le cas échéant
*/
return [
'unicaen-bddadmin' => [
'ddl' => [
/* Répertoire où placer votre DDL */
//'dir' => 'data/ddl',
/* Nom par défaut du fichier de sauvegarde des positionnements de colonnes */
//'columns_positions_file' => 'data/ddl_columns_pos.php',
/* array général des filtres de DDL à appliquer afin d'ignorer ou bien de forcer la prise en compte de certains objets lors de la mise à jour
* le format d'array doit respecter la spécification des DdlFilters
* Ce tableau des filtres est utilisé aussi bien en MAJ DDL qu'en MAJ BDD
*/
'filters' => [],
/* array des filtres dédié à la mise à jour de la base de données à partir de la DDL
* le format d'array doit respecter la spécification des DdlFilters
* pour les update-bdd, si init-update-bdd-filters est à true :
* - le mode EXPLICIT est forcé : c'est à dire que ce qui n'est pas spécifié dans le filtre n'existe pas
* - le filtre est initialisé avec les objets déjà présents en DDL
* - les tables présentes dans la BD sont ajoutées afin de ne pas être supprimées si elles ne sont pas en DDL (protection contre des suppressions involontaires)
*/
'update-bdd-filters' => [],
/*
* si true, alors le mode explicit est forcé, le filtre est peuplé avec la DDL + les tables déjà présentes dans la base de données
* Ce mode est plus sûr.
* Si false, alors les filtres utilisés seront strictement ceux fournis par filters & update-bdd-filters
* /!\ Attention /!\ si false : sans aucun filtre, les tables non listées en DDL seront supprimées de la base de données
*/
'init-update-bdd-filters' => true,
/* array des filtres dédié à la mise à jour de la DDL, afin d'éviter que ne se retrouvent en DDL certains objets présents en base
* le format d'array doit respecter la spécification des DdlFilters
*/
'update-ddl-filters' => [],
],
'data' => [
'config' => [
/* array dont le format est le suivant :
*
* 'nom_de_ma_table => [
* // à adapter, 'install' par exemple pour un jeu de données servant à installer l'appli qui sera paramétré ensuite
* 'actions' => ['install', 'update'],
*
* // string|array : liste des colonnes servant à identifier de manière certaine et unique les lignes (par exemple 'code')
* 'key' => 'code',
*
* // Ce tableau d'options est transmis à la fonction Unicaen\BddAdmin\Table::merge
* // vous pouvez vous renseigner sur l'usage de cette méthode, car bien d'autres possibilités existent...
* 'options => [
* // permet au besoin de faire des ajouts et des modifs, mais jamais de supprimer ce ui a été ajouté par ailleurs
* 'delete' => false,
*
* // avec cet exemple la mise à jour du jeu de données ne concernera pas les données saisies dans la colonne ma_col_specifique
* 'update-ignore-cols' => ['ma_col_specifique'],
*
* ...
* ],
* ],
* ...
*/
],
'sources' => [
/* Liste des sources sous forme de tableau
* Les valeurs correspondant à des noms de classes PHP qui seront instanciées par le DataManager
* Vous pouvez également passer des noms ou alias de services déclarés auprès du serviceManager de Laminas
* pour profiter de l'injection de dépendance
*/
],
],
'migration' => [
/* Liste des scripts de migration sous forme de tableau
* Les scripts de migration devront tous hériter de la classe abstraite Unicaen\BddAdmin\Migration\MigrationAction
* Les valeurs correspondant à des noms de classes PHP qui seront instanciées par le DataManager
* Vous pouvez également passer des noms ou alias de services déclarés auprès du serviceManager de Laminas
* pour profiter de l'injection de dépendance
*/
],
/* Nom des colonnes servant de clé primaire dans vos tables, généralement 'id' pour la compatibilité avec Doctrine
* Si des tables n'ont pas de colonne 'id' ou personnalisé, le système fonctionnera sans utiliser les séquences pour initialiser la clé primaire
*/
//'id_column' => 'id',
'histo' => [
/* ID par défaut de l'utilisateur utilisé par le DataManager pour insérer ou modifier les données
* Peut être fourni ici ou bien dans une factory adaptée en utilisant la méthode suivante :
*
* $config = [...config de bddAdmin...];
* $bdd = new Unicaen\BddAdmin\Bdd($config);
*
* $monUsername = 'mon_username';
* $monId = $bdd->selectOne('SELECT id FROM utilisateur WHERE username=:username', ['username' => $monUsername], 'id');
* $bdd->setHistoUserId($monId);
*
* Si user_id est NULL, cette fonctionnalité d'historisation sera désactivée
*/
//'user_id' => null,
/* Noms des colonnes utilisées pour gérer les historiques
* Attention : tous les noms doivent être renseignés ou alors tous mis à NULL si pas de gestion d'historiques
* Se base par défaut sur ce qui est préconisé pour UnicaenApp\Entity\HistoriqueAwareInterface
*
* Si vos tables ne possèdent pas l'ensemble de ces colonnes, la gestion de l'historique ne sera pas appliquée sur celles-ci
*/
//'histo_creation_column' => 'histo_creation',
//'histo_modification_column' => 'histo_modification',
//'histo_destruction_column' => 'histo_destruction',
//'histo_createur_id_column' => 'histo_createur_id',
//'histo_modificateur_id_column' => 'histo_modificateur_id',
//'histo_destructeur_id_column' => 'histo_destructeur_id',
],
'import' => [
/* Compatibilité avec un système d'import de données
* ID de la source par défaut utilisée par le DataManager pour insérer une ligne d'une table synchronisable
* Peut être fourni ici ou bien dans une factory adaptée en utilisant la méthode suivante :
*
* $config = [...config de bddAdmin...];
* $bdd = new Unicaen\BddAdmin\Bdd($config);
*
* $code = 'ma_source';
* $monId = $bdd->selectOne('SELECT id FROM source WHERE code=:code', ['code' => $code], 'id');
* $bdd->setSourceId($monId);
*
* Si source_id est NULL, cette fonctionnalité d'initialisation de sources sera désactivée
*
*/
//'source_id' => null,
/* Noms des colonnes utilisées pour gérer les données liées à l'import depuis d'autres logiciels
* Attention : tous les noms doivent être renseignés ou alors tous mis à NULL si pas de gestion d'import
*
* Si vos tables ne possèdent pas l'ensemble de ces colonnes, la gestion des colonnes d'import ne sera pas appliquée sur celles-ci
*/
//'source_id_column' => 'source_id',
//'source_code_column' => 'source_code',
],
],
];
\ No newline at end of file
<?php
/*
* Fichier à copier/coller dans config/autoload/unicaen-bddadmin.local.php
*/
return [
'unicaen-bddadmin' => [
'connection' => [
'default' => [ // généralement : base de dév, peut s'appeler autrement que 'default'
'host' => 'à renseigner ...',
'port' => 'à renseigner ...',
'dbname' => 'à renseigner ...',
'user' => 'à renseigner ...',
'password' => 'à renseigner ...',
],
/* Autres instances éventuelles de votre base de données
'preprod' => [
'host' => 'à renseigner ...',
...
],
'prod' => [
'host' => 'à renseigner ...',
...
],
...
*/
],
/* Connexion à utiliser par défaut, nom à sélectionner parmi la liste des connexions disponibles */
//'current_connection' => 'default',
],
];
\ No newline at end of file
...@@ -21,6 +21,29 @@ Voici ses fonctionnalités : ...@@ -21,6 +21,29 @@ Voici ses fonctionnalités :
## Instanciation ## Instanciation
### Depuis Laminas
BddAdmin est un module Laminas.
Il faut donc l'utiliser par ce biais.
Comme pour les autres bibliothèques Unicaen,
copier/coller les fichiers config/*.php.dist et les adapter.
Ajouter 'Unicaen\BddAdmin', à la liste de vos mosules dans votre application.
Pour y accéder :
Un BddAwareTrait permet d'injecter ses accesseurs.
Dans la Factory de votre classe, ajouter :
$service->setBdd($container->get(Unicaen\BddAdmin\Bdd::class));
### En accès direct
Ce mode peut servir si on utilise la bibliothèque hors Laminas.
Il peut aussi servir si vous voulez accéder à une autre BDD.
Voici comment instancier un nouvel objet Bdd Voici comment instancier un nouvel objet Bdd
```php ```php
...@@ -32,7 +55,7 @@ $config = [ ...@@ -32,7 +55,7 @@ $config = [
'host' => '*********', // IP ou nom DNS 'host' => '*********', // IP ou nom DNS
'port' => 5432, // port, à adapter 'port' => 5432, // port, à adapter
'dbname' => '*********', // Nom de votre base de données 'dbname' => '*********', // Nom de votre base de données
'username' => '*********', // Utilisateur 'user' => '*********', // Utilisateur : "username" ou "user", les 2 clés fonctionnent
'password' => '*********', // Mot de passe 'password' => '*********', // Mot de passe
]; ];
...@@ -43,12 +66,23 @@ application. ...@@ -43,12 +66,23 @@ application.
## Utilisation des commandes standard
Les commandes ne sont disponibles que si vous utilisez BddAdmin avec son module Laminas.
BddAdmin possède une facade CLI avec des commandes Symphony accessibles.
La liste est accessible via la commande
./vendor/bin/laminas list
Les commandes BddAdmin commencent tout simplement par "bddadmin:".
## Accès aux outils ## Accès aux outils
### DataUpdater ### DataManager
Il sert à gérer les mises à jour de données Il sert à gérer les mises à jour de données
...@@ -57,7 +91,7 @@ Accès : ...@@ -57,7 +91,7 @@ Accès :
```php ```php
/** @var $bdd \Unicaen\BddAdmin\Bdd */ /** @var $bdd \Unicaen\BddAdmin\Bdd */
$du = $bdd->dataUpdater(); $du = $bdd->data();
``` ```
......
# Options # Options
- hasOption
- getOption
- setOption
- getOptions - getOptions
- setOptions - setOptions
\ No newline at end of file
This diff is collapsed.
<?php
namespace Unicaen\BddAdmin;
use Psr\Container\ContainerInterface;
use Unicaen\BddAdmin\Data\DataManager;
/**
* Description of BddFactory
*
* @author Laurent Lécluse <laurent.lecluse at unicaen.fr>
*/
class BddFactory
{
/**
* @param ContainerInterface $container
* @param string $requestedName
* @param array|null $options
*
* @return Bdd
*/
public function __invoke(ContainerInterface $container, $requestedName, $options = null): Bdd
{
if (Bdd::class == $requestedName){
$configKey = 'unicaen-bddadmin';
}else{
$configKey = $requestedName;
}
$config = $container->get('config')['unicaen-bddadmin'];
$bdd = new Bdd($config);
$bdd->__container = $container;
return $bdd;
}
}
\ No newline at end of file
<?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 ClearCommand
*
* @author Laurent Lécluse <laurent.lecluse at unicaen.fr>
*/
class ClearCommand extends Command
{
use BddAwareTrait;
protected function configure(): void
{
$this->setDescription('Vide la base de données');
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$io = new SymfonyStyle($input, $output);
$bdd = $this->getBdd()->setLogger($io);
$bdd->drop();
return Command::SUCCESS;
}
}
\ No newline at end of file
<?php
namespace Unicaen\BddAdmin\Command;
use Psr\Container\ContainerInterface;
use Unicaen\BddAdmin\Bdd;
/**
* Description of CommandFactory
*
* @author Laurent Lécluse <laurent.lecluse at unicaen.fr>
*/
class CommandFactory
{
/**
* @param ContainerInterface $container
* @param string $requestedName
* @param array|null $options
*
* @return InstallBddCommand
*/
public function __invoke(ContainerInterface $container, $requestedName, $options = null)
{
$command = new $requestedName;
$command->setBdd($container->get(Bdd::class));
return $command;
}
}
\ No newline at end of file
<?php
namespace Unicaen\BddAdmin\Command;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
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 CopyFromCommand
*
* @author Laurent Lécluse <laurent.lecluse at unicaen.fr>
*/
class CopyFromCommand extends Command
{
use BddAwareTrait;
protected function configure(): void
{
$this
->setDescription('Copie depuis une autre BDD')
->addArgument('source', InputArgument::OPTIONAL, 'Nom de la BDD d\'origine');
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$io = new SymfonyStyle($input, $output);
$bdd = $this->getBdd()->setLogger($io);
$bdds = $bdd->getBdds();
if (empty($bdds)) {
$io->error('Aucune base de donnée possible n\'est en source : copie impossible');
$io->info('Veuillez ajouter d\'autres connexions en configuration dans unicaen-bddadmin/connection');
return Command::INVALID;
}
$source = $input->getArgument('source');
if (!$source) {
$source = $io->choice(
'Veuillez choisir une base de données source',
$bdd->getBdds()
);
}
// Lance la copie
$bdd->copy($source);
return Command::SUCCESS;
}
}
\ No newline at end of file
<?php
namespace Unicaen\BddAdmin\Command;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
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 CopyToCommand
*
* @author Laurent Lécluse <laurent.lecluse at unicaen.fr>
*/
class CopyToCommand extends Command
{
use BddAwareTrait;
protected function configure(): void
{
$this
->setDescription('Copie vers une autre BDD')
->addArgument('destination', InputArgument::OPTIONAL, 'Nom de la BDD de destination');
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$io = new SymfonyStyle($input, $output);
$bdd = $this->getBdd()->setLogger($io);
$bdds = $bdd->getBdds();
if (empty($bdds)) {
$io->error('Aucune base de donnée possible n\'est en destination : copie impossible');
$io->info('Veuillez ajouter d\'autres connexions en configuration dans unicaen-bddadmin/connection');
return Command::INVALID;
}
$destination = $input->getArgument('destination');
if (!$destination) {
// Si l'argument n'est pas fourni, on demande à l'utilisateur de choisir une valeur
$destination = $io->choice(
'Veuillez choisir une base de données de destination',
$bdd->getBdds()
);
}
$bdd->copyTo($destination);
return Command::SUCCESS;
}
}
\ No newline at end of file
<?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 InstallBddCommand
*
* @author Laurent Lécluse <laurent.lecluse at unicaen.fr>
*/
class InstallCommand extends Command
{
use BddAwareTrait;
protected function configure(): void
{
$this->setDescription('Peuple la base de données à partir de la DDL et du jeu de données par défaut');
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$io = new SymfonyStyle($input, $output);
$bdd = $this->getBdd()->setLogger($io);
$bdd->install();
return Command::SUCCESS;
}
}
\ No newline at end of file
<?php
namespace Unicaen\BddAdmin\Command;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Question\ConfirmationQuestion;
use Symfony\Component\Console\Style\SymfonyStyle;
use Unicaen\BddAdmin\BddAwareTrait;
use Unicaen\BddAdmin\Data\DataManager;
use Unicaen\BddAdmin\Ddl\Ddl;
/**
* Description of LoadCommand
*
* @author Laurent Lécluse <laurent.lecluse at unicaen.fr>
*/
class LoadCommand extends Command
{
use BddAwareTrait;
protected function configure(): void
{
$this->setDescription('Chargement de la base de données depuis un fichier')
->addArgument('filename', InputArgument::REQUIRED, 'Chemin du fichier de sauvegarde');
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$io = new SymfonyStyle($input, $output);
$bdd = $this->getBdd()->setLogger($io);
$filename = $input->getArgument('filename');
if (!str_starts_with($filename, DIRECTORY_SEPARATOR)){
$filename = $_SERVER['PWD'].DIRECTORY_SEPARATOR.$filename;
}
if (!file_exists($filename)){
$io->error('Le fichier '.$filename.' n\'existe pas');
return Command::FAILURE;
}
$bdd->load($filename);
return Command::SUCCESS;
}
}
\ No newline at end of file
<?php
namespace Unicaen\BddAdmin\Command;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Question\ConfirmationQuestion;
use Symfony\Component\Console\Style\SymfonyStyle;
use Unicaen\BddAdmin\BddAwareTrait;
use Unicaen\BddAdmin\Data\DataManager;
use Unicaen\BddAdmin\Ddl\Ddl;
/**
* Description of SaveCommand
*
* @author Laurent Lécluse <laurent.lecluse at unicaen.fr>
*/
class SaveCommand extends Command
{
use BddAwareTrait;
protected function configure(): void
{
$this->setDescription('Sauvegarde de la base de données dans un fichier')
->addArgument('filename', InputArgument::REQUIRED, 'Chemin du fichier de destination');
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$io = new SymfonyStyle($input, $output);
$bdd = $this->getBdd()->setLogger($io);
$filename = $input->getArgument('filename');
if (!str_starts_with($filename, DIRECTORY_SEPARATOR)){
$filename = $_SERVER['PWD'].DIRECTORY_SEPARATOR.$filename;
}
if (file_exists($filename)){
$helper = $this->getHelper('question');
$question = new ConfirmationQuestion('Le fichier existe déjà, voulez-vous le remplacer ? (yes/no) [no]: ', false);
if (!$helper->ask($input, $output, $question)) {
$io->warning('Opération annulée par l\'utilisateur.');
return Command::FAILURE;
}else{
unlink($filename);
}
}
$bdd->save($filename);
return Command::SUCCESS;
}
}
\ No newline at end of file
<?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;
use Unicaen\BddAdmin\Migration\MigrationManager;
/**
* Description of UpdateCommand
*
* @author Laurent Lécluse <laurent.lecluse at unicaen.fr>
*/
class UpdateCommand extends Command
{
use BddAwareTrait;
protected function configure(): void
{
$this->setDescription('Met à jour la base de données & ses données à partir de la DDL et du jeu de données');
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$io = new SymfonyStyle($input, $output);
$bdd = $this->getBdd()->setLogger($io);
$bdd->update();
return Command::SUCCESS;
}
}
\ No newline at end of file
<?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 UpdateDataCommand
*
* @author Laurent Lécluse <laurent.lecluse at unicaen.fr>
*/
class UpdateDataCommand extends Command
{
use BddAwareTrait;
protected function configure(): void
{
$this->setDescription('Met à jour les données de la base de données');
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$io = new SymfonyStyle($input, $output);
$bdd = $this->getBdd()->setLogger($io);
$bdd->updateData();
return Command::SUCCESS;
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment