Quellcode durchsuchen

fix schema update script

Olivier Massot vor 7 Monaten
Ursprung
Commit
09a402f44f
2 geänderte Dateien mit 28 neuen und 3 gelöschten Zeilen
  1. 7 0
      config/services.yaml
  2. 21 3
      src/Commands/Doctrine/SchemaUpdateCommand.php

+ 7 - 0
config/services.yaml

@@ -127,3 +127,10 @@ services:
     Symfony\Component\DependencyInjection\ContainerInterface: '@service_container'
     #########################################
 
+    doctrine.schema_update_command:
+        class: App\Commands\Doctrine\SchemaUpdateCommand
+        arguments:
+            - '@doctrine.orm.command.entity_manager_provider'
+        tags: ['console.command']
+
+

+ 21 - 3
src/Commands/Doctrine/SchemaUpdateCommand.php

@@ -6,9 +6,12 @@ declare(strict_types=1);
 
 namespace App\Commands\Doctrine;
 
-use App\Service\Utils\Path;
+use App\Service\Utils\FileUtils;
+use App\Service\Utils\PathUtils;
 use Doctrine\ORM\Tools\Console\Command\SchemaTool\UpdateCommand;
+use Doctrine\ORM\Tools\Console\EntityManagerProvider;
 use Doctrine\ORM\Tools\SchemaTool;
+use Path\Path;
 use Symfony\Component\Console\Input\InputInterface;
 use Symfony\Component\Console\Output\OutputInterface;
 use Symfony\Component\Console\Style\SymfonyStyle;
@@ -18,13 +21,28 @@ use Symfony\Component\Console\Style\SymfonyStyle;
  */
 class SchemaUpdateCommand extends UpdateCommand
 {
+    public static function getDefaultName(): string
+    {
+        return 'doctrine:schema:update';
+    }
+
+    public function __construct(
+        private readonly EntityManagerProvider $entityManagerProvider
+    )
+    {
+        parent::__construct($this->entityManagerProvider);
+    }
+
     protected function executeSchemaCommand(InputInterface $input, OutputInterface $output, SchemaTool $schemaTool, array $metadatas, SymfonyStyle $ui): int
     {
         $output->writeln('-- Executing pre-update scripts');
 
         // Lists schema extensions scripts in the '/sql/schema-extensions' dir
         $schemaExtensionsDir = PathUtils::join(PathUtils::getProjectDir(), 'sql', 'schema-extensions');
-        $scripts = $this->fileUtils->list($schemaExtensionsDir, '*.sql');
+
+        $schemaExtensionsDir = (new Path(PathUtils::getProjectDir()))->append('sql', 'schema-extensions');
+
+        $scripts = $schemaExtensionsDir->glob('*.sql');
         sort($scripts);
 
         // Execute those scripts in alphabetical order
@@ -32,7 +50,7 @@ class SchemaUpdateCommand extends UpdateCommand
         $conn = $em->getConnection();
 
         foreach ($scripts as $script) {
-            $sql = $this->fileUtils->getFileContent($script);
+            $sql = $script->getContent();
             $conn->executeQuery($sql);
         }