Commit 3034ecd4 authored by Laurent Lecluse's avatar Laurent Lecluse
Browse files

suite doc

parent 718927de
Loading
Loading
Loading
Loading
Loading
+34 −5
Original line number Diff line number Diff line
@@ -66,7 +66,7 @@ Bdd permet de :
- exécuter des opérations de maintenance/mise à niveau supplémentaires : (`majSequences`,`refreshMaterializedViews`,`compilerTout`)
- faires des opérations de copie de bases de données : (`copy`, `copyTo`)
- faire des opérations de sauvegarde/restauration de bases de données (`save`, `load`)
- accéder au gestionnaire de données [DataManager](donnees.md) (`$bdd->data()`)
- accéder au gestionnaire de données [DataManager](data.md) (`$bdd->data()`)
- accéder au gestionnaire de scripts de migrations [MigrationManager](migrations.md) (`$bdd->migration()`)

Vous trouverez plus d'infos sur l'API de BDd [ici](bdd.md)
@@ -97,6 +97,8 @@ La classe Table permet de :

Le `merge` est particulièrement important : il est utilisé par le DataManager pour mettre à jour le jeu de données de la bdd.

Vous trouverez plus d'infos sur l'API de Table [ici](table.md)

## Managers

Chaque type d'objet a son propre Manager, qui implémente [ManagerInterface](../src/Manager/ManagerInterface.php).
@@ -196,17 +198,44 @@ Ceci permet de ne travailler qu'avec des codes ou des données persistentes, les

Enfin, dans certain cas des opétation "custom" sont possibles.

La documentation du format de configuration du DataManager est décrite [ici](configs/data-config.md).
Vous trouverez plus d'informations sur le DataManager [ici](data.md)



## MigrationManager

L'outil de migration de BddAdmin n'a rien à voir avec les technologies de migration habituelles.
Le but ici est de proposer une architecture pour pouvoir écrire des actions de migrations manuelles gérant les cas complexes, liés aux données, 
que BddAdmin ne peut pas traiter seul.

Vous trouverez plus d'infos sur la mise en oeuvre des migrations [ici](migrations.md)



## Logger

BddAdmin peut collecter un certain nombre de messages pour indiquer quelles opérations sont en cours.

Le Logger propose une architecture qui va permettre de collecter les informations pour les restituer ensuite.

La listes des opérations collectées est la suivante :
- `title(string $title)` : Permet d'écrire un titre
- `success(string $message)` : Affiche un message de succès
- `error(\Throwable|string $e)` : Affiche une erreur
- `begin(string $title)` : Indique le début d'une action
- `end(?string $msg = null)` : Indique la fin d'une action
- `msg($message, bool $rewrite = false)` : Ecris un message, `rewrite` pour écrire par dessus le précédant affiché ou non

Tout est défini dans le [Unicaen\BddAdmin\Logger\LoggerInterface](../src/Logger/LoggerInterface.php).

De base, deux modes de restitution sont proposés :
- Default : simples `prints` en console texte.
- SymfonyStyle : Utilise le SynfonyStyle des commandes console Synfony pour formatter/coloriser les messages.

## Commandes
Vous pouvez créer votre propre logger au besoin, pour collecter les messages et les écrire dans un fichier par exemple.

Des commandes en console permettent de lancer un certain nombre d'opérations en utilisant BddAdmin.
Vous devrez alors le fournir à [Bdd](../src/Bdd.php) via la méthode `setLogger`.
A l'inverse, vous pouvez récupérer le logger de BddAdmin via `$bdd->getLogger()`.
Ceci car Bdd implémente le [LoggerAwareTrait](../src/Logger/LoggerAwareTrait.php).

La liste complète est disponible [ici](doc.md).
 No newline at end of file
Tous les mécanismes dans BddAdmin qui utilisent le logger passent par le `LoggerAwareTrait`.
 No newline at end of file
+0 −1
Original line number Diff line number Diff line
# Schéma de configuration du DataManager
 No newline at end of file

doc/console.md

0 → 100644
+26 −0
Original line number Diff line number Diff line
# Commandes console

## Opérations globales

- **[clear](console/clear.md)** : Vidage de base de données
- **[copy-from](console/copy-from.md)** : transfère une base dans la base courante
- **[copy-to](console/copy-to.md)** : tranfère la base courante dans une autre base
- **[load](console/load.md)** : initialise une base de données à partir d'une archive de sauvegarde BddAdmin
- **[save](console/save.md)** : Crée une archive de sauvegarde à partir de la base de données courante
- **[install](console/install.md)** : initialise une base de données avec un jeu de données par défaut

## Opérations différentielles

- **[update](console/update.md)** : Lance la mise à jour de la base de données (Objets & données)
- **[update-ddl](console/update-ddl.md)** : Lance la mise à jour de la DDL à partir de la base de données

## Jeux de données

- **[update-data](console/update-data.md)** : Met à jour les données de la base selon le jeu de données fourni
- **[make-data](console/make-data.md)** : Crée un jeu de données à partir de la base de données courante

## Autres commandes

- **[test-migration](console/test-migration.md)** : Permet de tester le bon fonctionnement des scripts de migration
- **[update-sequences](console/update-sequences.md)** : Met à jour les séquences afin que leur valeur courante ne soit
  pas déjà utilisée

doc/data.md

0 → 100644
+3 −0
Original line number Diff line number Diff line


La documentation du format de configuration du DataManager est décrite [ici](configs/data-config.md).
 No newline at end of file
+62 −6
Original line number Diff line number Diff line
# Ddl
# Manipulation de la DDL

getDdl
getRefDdl
L'objet `Ddl` représente la structure de la base de données (Tables, Vues, Index, etc.). BddAdmin permet de manipuler deux types de DDL :
1.  La DDL "Reference" (stockée dans vos fichiers).
2.  La DDL "Live" (issue de l'introspection de la base de données).

create
alter
drop
## Récupération

### `getRefDdl()`
Récupère l'objet DDL construit à partir des fichiers stockés dans le répertoire configuré (`OPTION_DDL_DIR`).

```php
$refDdl = $bdd->getRefDdl();
```

### `getDdl(array $filters = [])`
Récupère l'objet DDL construit en analysant la base de données connectée.

```php
// Tout récupérer
$liveDdl = $bdd->getDdl();

// Récupérer avec filtres (ex: ignorer certaines tables)
$filters = [
    'table' => [
        'includes' => ['users', 'roles'], // Ne prendre que ces tables
        'excludes' => ['logs_*']          // Exclure ces tables
    ]
];
$liveDdl = $bdd->getDdl($filters);
```

## Opérations sur la DDL

L'objet `Ddl` permet d'accéder aux définitions des objets.

```php
$tables = $refDdl->get('table'); // Retourne un tableau des définitions de tables
$views = $refDdl->get('view');
```

## Sauvegarde

Pour mettre à jour les fichiers de référence à partir d'une DDL (généralement celle issue de la BDD) :

```php
$liveDdl = $bdd->getDdl();
$liveDdl->saveToDir($repertoireDestination); 
// Si $repertoireDestination est null, utilise OPTION_DDL_DIR
```

## Modification de la Base (Alter)

Pour appliquer une DDL à la base de données (le cœur de `bddadmin:update`) :

```php
$ref = $bdd->getRefDdl();

// Création des filtres de diff
$filters = $ref->makeFilters(); 

// Application : BddAdmin calcule le diff entre $ref et la BDD actuelle et joue les ALTERS
$bdd->alter($ref, $filters);
```
 No newline at end of file
Loading