Loading config/unicaen-db-import.global.php.dist +1 −1 Original line number Diff line number Diff line Loading @@ -107,7 +107,7 @@ return [ // le nom de la colonne dans la table destination. Valeurs possibles : // - array : un filtre de type `\UnicaenDbImport\Filter\ColumnName\ArrayMapColumnNameFilter` // sera instancié avec ce tableau de correspondance comme mapping ; // - string : service ou classe de filtre à instancier pour // - string : service ou classe de filtre à instancier, // implémentant {@see \UnicaenDbImport\Filter\ColumnName\ColumnNameFilterInterface} ; // NB : par défaut, `\UnicaenDbImport\Filter\ColumnName\DefaultColumnNameFilter::class` // est utilisé. Loading src/UnicaenDbImport/CodeGenerator/CodeGenerator.php +22 −4 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ namespace UnicaenDbImport\CodeGenerator; use Doctrine\DBAL\Platforms\AbstractPlatform; use Generator; use InvalidArgumentException; use RuntimeException; use UnicaenDbImport\CodeGenerator\Helper\LogTableHelper; use UnicaenDbImport\CodeGenerator\Helper\TableHelper; Loading Loading @@ -227,8 +228,8 @@ abstract class CodeGenerator implements CodeGeneratorInterface */ public function generateSQLForSelectFromSource(SourceInterface $source): iterable { if ($select = $source->getSelect()) { $queries = $this->normalizedSelect($select); if ($source->getSelect()) { $queries = $this->normalizedSelect($source); } else { $sourceTable = $source->getTable(); $queries = [$this->tableHelper->generateSQLForSelectFromTable($sourceTable)]; Loading @@ -249,14 +250,31 @@ abstract class CodeGenerator implements CodeGeneratorInterface return $queries; } protected function normalizedSelect(string|iterable $select): iterable /** * TODO : tester ! */ protected function normalizedSelect(SourceInterface $source): iterable { $select = $source->getSelect(); if (is_iterable($select)) { $selects = $select; foreach ($selects as $sel) { if (!is_string($sel)) { throw new InvalidArgumentException(sprintf( "Seul le type string est autorisé pour chacun des select de la source '%s'", $source->getName() )); } } return $select; } elseif (is_string($select)) { return [$select]; } else { throw new RuntimeException("Format inattendu de spécification du/des selects"); throw new RuntimeException(sprintf( "Format inattendu de spécification du/des selects pour la source '%s'", $source->getName() )); } } /** Loading src/UnicaenDbImport/Config/ColumnValueFilterConfigFactoryTrait.php +6 −2 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ namespace UnicaenDbImport\Config; use Assert\Assertion; use Assert\AssertionFailedException; use Psr\Container\ContainerInterface; use SplPriorityQueue; use UnicaenDbImport\Filter\ColumnValue\ColumnValueFilterInterface; use UnicaenDbImport\Filter\ColumnValue\SameColumnValueFilter; Loading @@ -22,11 +23,12 @@ trait ColumnValueFilterConfigFactoryTrait */ protected function getColumnValueFilters(array $sourceConfig, string $key, ContainerInterface $container): array ContainerInterface $container): iterable { $columnValueFilter = $sourceConfig[$key] ?? []; $filterInstances = []; // $filterInstances = new SplPriorityQueue(); foreach ((array)$columnValueFilter as $nameOrIndex => $spec) { try { $filterInstance = $this->getColumnValueFilter($spec, $container); Loading @@ -36,7 +38,9 @@ trait ColumnValueFilterConfigFactoryTrait if ($filterInstance === NULL) { throw ConfigException::invalidValueForKey($key); } $filterInstances[$nameOrIndex] = $filterInstance; $filterInstances[$filterInstance->getColumn()] = $filterInstance; // $priority = $spec['priority'] ?? 0; // $filterInstances->insert($filterInstance, $priority); } return $filterInstances; Loading src/UnicaenDbImport/Config/ConfigFactory.php +1 −1 Original line number Diff line number Diff line Loading @@ -409,7 +409,7 @@ class ConfigFactory $connectionName = $destinationConfig['connection']; $destinationConfig['connection'] = $this->getConnectionByName($connectionName); $destinationConfig['column_value_filter'] = $this->getColumnValueFilterInstances($destinationConfig, 'column_value_filter', $this->container); $destinationConfig['column_value_filter'] = $this->getColumnValueFilterInstances($destinationConfig, 'column_value_filter'); return Destination::fromConfig($destinationConfig); } Loading src/UnicaenDbImport/Domain/Source.php +2 −1 Original line number Diff line number Diff line Loading @@ -118,7 +118,8 @@ class Source implements SourceInterface return '(Generator)'; } elseif (is_iterable($select)) { if ($select[0] ?? null) { return '[' . $select[0] . ', ...]'; $url = $select[0]['url'] ?? $select[0]; return '[' . $url . ', ...]'; } else { return ":-( ITERABLE VIDE"; } Loading Loading
config/unicaen-db-import.global.php.dist +1 −1 Original line number Diff line number Diff line Loading @@ -107,7 +107,7 @@ return [ // le nom de la colonne dans la table destination. Valeurs possibles : // - array : un filtre de type `\UnicaenDbImport\Filter\ColumnName\ArrayMapColumnNameFilter` // sera instancié avec ce tableau de correspondance comme mapping ; // - string : service ou classe de filtre à instancier pour // - string : service ou classe de filtre à instancier, // implémentant {@see \UnicaenDbImport\Filter\ColumnName\ColumnNameFilterInterface} ; // NB : par défaut, `\UnicaenDbImport\Filter\ColumnName\DefaultColumnNameFilter::class` // est utilisé. Loading
src/UnicaenDbImport/CodeGenerator/CodeGenerator.php +22 −4 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ namespace UnicaenDbImport\CodeGenerator; use Doctrine\DBAL\Platforms\AbstractPlatform; use Generator; use InvalidArgumentException; use RuntimeException; use UnicaenDbImport\CodeGenerator\Helper\LogTableHelper; use UnicaenDbImport\CodeGenerator\Helper\TableHelper; Loading Loading @@ -227,8 +228,8 @@ abstract class CodeGenerator implements CodeGeneratorInterface */ public function generateSQLForSelectFromSource(SourceInterface $source): iterable { if ($select = $source->getSelect()) { $queries = $this->normalizedSelect($select); if ($source->getSelect()) { $queries = $this->normalizedSelect($source); } else { $sourceTable = $source->getTable(); $queries = [$this->tableHelper->generateSQLForSelectFromTable($sourceTable)]; Loading @@ -249,14 +250,31 @@ abstract class CodeGenerator implements CodeGeneratorInterface return $queries; } protected function normalizedSelect(string|iterable $select): iterable /** * TODO : tester ! */ protected function normalizedSelect(SourceInterface $source): iterable { $select = $source->getSelect(); if (is_iterable($select)) { $selects = $select; foreach ($selects as $sel) { if (!is_string($sel)) { throw new InvalidArgumentException(sprintf( "Seul le type string est autorisé pour chacun des select de la source '%s'", $source->getName() )); } } return $select; } elseif (is_string($select)) { return [$select]; } else { throw new RuntimeException("Format inattendu de spécification du/des selects"); throw new RuntimeException(sprintf( "Format inattendu de spécification du/des selects pour la source '%s'", $source->getName() )); } } /** Loading
src/UnicaenDbImport/Config/ColumnValueFilterConfigFactoryTrait.php +6 −2 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ namespace UnicaenDbImport\Config; use Assert\Assertion; use Assert\AssertionFailedException; use Psr\Container\ContainerInterface; use SplPriorityQueue; use UnicaenDbImport\Filter\ColumnValue\ColumnValueFilterInterface; use UnicaenDbImport\Filter\ColumnValue\SameColumnValueFilter; Loading @@ -22,11 +23,12 @@ trait ColumnValueFilterConfigFactoryTrait */ protected function getColumnValueFilters(array $sourceConfig, string $key, ContainerInterface $container): array ContainerInterface $container): iterable { $columnValueFilter = $sourceConfig[$key] ?? []; $filterInstances = []; // $filterInstances = new SplPriorityQueue(); foreach ((array)$columnValueFilter as $nameOrIndex => $spec) { try { $filterInstance = $this->getColumnValueFilter($spec, $container); Loading @@ -36,7 +38,9 @@ trait ColumnValueFilterConfigFactoryTrait if ($filterInstance === NULL) { throw ConfigException::invalidValueForKey($key); } $filterInstances[$nameOrIndex] = $filterInstance; $filterInstances[$filterInstance->getColumn()] = $filterInstance; // $priority = $spec['priority'] ?? 0; // $filterInstances->insert($filterInstance, $priority); } return $filterInstances; Loading
src/UnicaenDbImport/Config/ConfigFactory.php +1 −1 Original line number Diff line number Diff line Loading @@ -409,7 +409,7 @@ class ConfigFactory $connectionName = $destinationConfig['connection']; $destinationConfig['connection'] = $this->getConnectionByName($connectionName); $destinationConfig['column_value_filter'] = $this->getColumnValueFilterInstances($destinationConfig, 'column_value_filter', $this->container); $destinationConfig['column_value_filter'] = $this->getColumnValueFilterInstances($destinationConfig, 'column_value_filter'); return Destination::fromConfig($destinationConfig); } Loading
src/UnicaenDbImport/Domain/Source.php +2 −1 Original line number Diff line number Diff line Loading @@ -118,7 +118,8 @@ class Source implements SourceInterface return '(Generator)'; } elseif (is_iterable($select)) { if ($select[0] ?? null) { return '[' . $select[0] . ', ...]'; $url = $select[0]['url'] ?? $select[0]; return '[' . $url . ', ...]'; } else { return ":-( ITERABLE VIDE"; } Loading