Loading CHANGELOG.md +1 −0 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ CHANGELOG 3.1.0 ----- - Config : possibilité d'utiliser des noms de colonnes en plus des noms d'attributs Doctrine. - Config : support d'un format plus explicite permettant de spécifier le modificateur Faker 'unique'. - Suppression des dépendances à unicaen/app en faveur de la nouvelle bibliothèque unicaen/sql. - Renommage de la table _METADATA en `unicaen_db_anonym`. - [FIX] Plus d'anonymisation si la valeur est null. Loading config/unicaen-db-anonym.local.php.dist +10 −10 Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ return [ /** * Chemin des scripts SQL à générer : * - 'anonymisation' : mise à jour des données avec des données fictives spécifiées. * - 'restauration' : mise à jour des données avec les valeurs d'origine. */ 'anonymisation' => '/tmp/unicaen_db_anonym_anonymisation.sql', 'restauration' => '/tmp/unicaen_db_anonym_restauration.sql', Loading @@ -21,19 +22,17 @@ return [ */ Individu::class => [ /** * Mapping des champs à modifier avec des données fictives générées avec FakerPHP * (@see https://fakerphp.github.io/formatters) * * 'field' => 'xxxxx' : formatter FakerPHP sans arguments `$faker->xxxxx()` * 'field' => ['xxxxx', 3, true] : formatter FakerPHP avec arguments `$faker->xxxxx(3, true)` * 'field' => 'null' : mise à NULL. * Mapping des champs/colonnes à modifier avec des données fictives * (générées avec FakerPHP : @see https://fakerphp.github.io/formatters) */ 'mapping' => [ 'nomUsuel' => 'lastName', 'nomPatronymique' => 'null', 'prenom1' => 'firstName', 'email' => 'safeEmail', // 2 possibilités : 'champDoctrine' => <specif> ou 'nom_de_colonne' => <specif> 'nomUsuel' => 'lastName', // càd `$faker->lastName()` 'nomPatronymique' => 'null', // càd mise à NULL. 'prenom1' => 'firstName', // càd `$faker->firstName()` 'email' => 'safeEmail', // càd `$faker->safeEmail()` 'leitmotiv' => ['words', 3, true], // càd `$faker->words(3, true)` 'leitmotivUnique' => ['name' => 'words', 'unique' => true, 'params' => [3, true]], // càd `$faker->unique()->words(3, true)` ], /** * Enregistrements à écarter, selon la valeur d'un attribut. Loading @@ -47,6 +46,7 @@ return [ ], Utilisateur::class => [ 'mapping' => [ 'username' => ['name' => 'userName', 'unique' => true, 'params' => []], 'email' => 'safeEmail', 'displayName' => 'name', ], Loading src/UnicaenDbAnonym/Service/DbService.php +18 −2 Original line number Diff line number Diff line Loading @@ -118,12 +118,28 @@ class DbService protected function generateFakeValue(array $fakerConfig, string $entity, string $field): string { // normalisation if (!array_key_exists('name', $fakerConfig)) { $method = array_shift($fakerConfig); $fakerConfig = ['name' => $method, 'params' => array_values($fakerConfig)]; } if (!array_key_exists('unique', $fakerConfig)) { $fakerConfig['unique'] = false; } $method = $fakerConfig['name']; if ($method === 'null') { return 'NULL'; } $params = $fakerConfig['params'] ?? []; $unique = (bool) $fakerConfig['unique']; $faker = $this->faker; if ($unique) { $faker = $this->faker->unique(); } $fakeValue = $this->faker->$method(...$fakerConfig); $fakeValue = $faker->$method(...$params); Assert::scalar($fakeValue, "La méthode '$method' spécifiée pour l'attribut '$field' de l'entité '$entity' " . "retourne une valeur non supportée : %s"); Loading Loading
CHANGELOG.md +1 −0 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ CHANGELOG 3.1.0 ----- - Config : possibilité d'utiliser des noms de colonnes en plus des noms d'attributs Doctrine. - Config : support d'un format plus explicite permettant de spécifier le modificateur Faker 'unique'. - Suppression des dépendances à unicaen/app en faveur de la nouvelle bibliothèque unicaen/sql. - Renommage de la table _METADATA en `unicaen_db_anonym`. - [FIX] Plus d'anonymisation si la valeur est null. Loading
config/unicaen-db-anonym.local.php.dist +10 −10 Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ return [ /** * Chemin des scripts SQL à générer : * - 'anonymisation' : mise à jour des données avec des données fictives spécifiées. * - 'restauration' : mise à jour des données avec les valeurs d'origine. */ 'anonymisation' => '/tmp/unicaen_db_anonym_anonymisation.sql', 'restauration' => '/tmp/unicaen_db_anonym_restauration.sql', Loading @@ -21,19 +22,17 @@ return [ */ Individu::class => [ /** * Mapping des champs à modifier avec des données fictives générées avec FakerPHP * (@see https://fakerphp.github.io/formatters) * * 'field' => 'xxxxx' : formatter FakerPHP sans arguments `$faker->xxxxx()` * 'field' => ['xxxxx', 3, true] : formatter FakerPHP avec arguments `$faker->xxxxx(3, true)` * 'field' => 'null' : mise à NULL. * Mapping des champs/colonnes à modifier avec des données fictives * (générées avec FakerPHP : @see https://fakerphp.github.io/formatters) */ 'mapping' => [ 'nomUsuel' => 'lastName', 'nomPatronymique' => 'null', 'prenom1' => 'firstName', 'email' => 'safeEmail', // 2 possibilités : 'champDoctrine' => <specif> ou 'nom_de_colonne' => <specif> 'nomUsuel' => 'lastName', // càd `$faker->lastName()` 'nomPatronymique' => 'null', // càd mise à NULL. 'prenom1' => 'firstName', // càd `$faker->firstName()` 'email' => 'safeEmail', // càd `$faker->safeEmail()` 'leitmotiv' => ['words', 3, true], // càd `$faker->words(3, true)` 'leitmotivUnique' => ['name' => 'words', 'unique' => true, 'params' => [3, true]], // càd `$faker->unique()->words(3, true)` ], /** * Enregistrements à écarter, selon la valeur d'un attribut. Loading @@ -47,6 +46,7 @@ return [ ], Utilisateur::class => [ 'mapping' => [ 'username' => ['name' => 'userName', 'unique' => true, 'params' => []], 'email' => 'safeEmail', 'displayName' => 'name', ], Loading
src/UnicaenDbAnonym/Service/DbService.php +18 −2 Original line number Diff line number Diff line Loading @@ -118,12 +118,28 @@ class DbService protected function generateFakeValue(array $fakerConfig, string $entity, string $field): string { // normalisation if (!array_key_exists('name', $fakerConfig)) { $method = array_shift($fakerConfig); $fakerConfig = ['name' => $method, 'params' => array_values($fakerConfig)]; } if (!array_key_exists('unique', $fakerConfig)) { $fakerConfig['unique'] = false; } $method = $fakerConfig['name']; if ($method === 'null') { return 'NULL'; } $params = $fakerConfig['params'] ?? []; $unique = (bool) $fakerConfig['unique']; $faker = $this->faker; if ($unique) { $faker = $this->faker->unique(); } $fakeValue = $this->faker->$method(...$fakerConfig); $fakeValue = $faker->$method(...$params); Assert::scalar($fakeValue, "La méthode '$method' spécifiée pour l'attribut '$field' de l'entité '$entity' " . "retourne une valeur non supportée : %s"); Loading