migrations/Version20220517081539.php line 1

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace DoctrineMigrations;
  4. use App\Domain\Content\Entity\ActualityRelation;
  5. use Doctrine\DBAL\Schema\Schema;
  6. use Doctrine\Migrations\AbstractMigration;
  7. /**
  8.  * Auto-generated Migration: Please modify to your needs!
  9.  */
  10. final class Version20220517081539 extends AbstractMigration
  11. {
  12.     public function getDescription(): string
  13.     {
  14.         return 'ActualityRelation';
  15.     }
  16.     public function up(Schema $schema): void
  17.     {
  18.         // this up() migration is auto-generated, please modify it to your needs
  19.         $this->connection->executeQuery('ALTER TABLE actuliaison ADD player_id INT DEFAULT NULL, ADD league_id INT DEFAULT NULL, ADD team_id INT DEFAULT NULL, ADD game_id INT DEFAULT NULL, ADD country_id INT DEFAULT NULL');
  20.         $lastId 0;
  21.         $missing 0;
  22.         while (true) {
  23.             $relations $this->connection->fetchAllAssociative("SELECT * FROM actuliaison WHERE idactuliaison > {$lastId} LIMIT 1000");
  24.             if (empty($relations)) {
  25.                 break;
  26.             }
  27.             foreach ($relations as $relation) {
  28.                 $relationId $lastId $relation['idactuliaison'];
  29.                 $relationType $relation['typeliaison'];
  30.                 $relationIdWhat $relation['idquoi'];
  31.                 $actualityId $relation['idactu'];
  32.                 $actualityExists $this->connection->fetchOne('SELECT idactu FROM actu WHERE idactu = :idactu', [
  33.                     'idactu' => $actualityId,
  34.                 ]);
  35.                 if (!$actualityExists) {
  36.                     ++$missing;
  37.                     echo "Relation.id {$relationId} : Missing Actuality.id {$actualityId}\n";
  38.                     $this->connection->executeQuery("DELETE FROM actuliaison WHERE idactuliaison = {$relationId}");
  39.                 }
  40.                 $query null;
  41.                 switch ((int) $relationType) {
  42.                     case ActualityRelation::TYPE_PLAYER:
  43.                         $playerId $this->connection->fetchOne("SELECT idjoueur FROM joueur WHERE idjoueurservice_joueur = {$relationIdWhat}");
  44.                         if ($playerId) {
  45.                             $query "player_id = {$playerId}";
  46.                         }
  47.                         break;
  48.                     case ActualityRelation::TYPE_TEAM:
  49.                         $teamId $this->connection->fetchOne("SELECT idequipe FROM equipe WHERE idequipeservice_equipe = {$relationIdWhat}");
  50.                         if ($teamId) {
  51.                             $query "team_id = {$teamId}";
  52.                         }
  53.                         break;
  54.                     case ActualityRelation::TYPE_LEAGUE:
  55.                         $leagueId $this->connection->fetchOne("SELECT idligue FROM ligue WHERE idligueservice_ligue = {$relationIdWhat}");
  56.                         if ($leagueId) {
  57.                             $query "league_id = {$leagueId}";
  58.                         }
  59.                         break;
  60.                     case ActualityRelation::TYPE_GAME:
  61.                         $gameId $this->connection->fetchOne("SELECT idmatch FROM `match` WHERE idmatchservice_match = {$relationIdWhat}");
  62.                         if ($gameId) {
  63.                             $query "game_id = {$gameId}";
  64.                         }
  65.                         break;
  66.                     case ActualityRelation::TYPE_COUNTRY:
  67.                         $countryId $this->connection->fetchOne("SELECT idpays FROM pays WHERE idpays = {$relationIdWhat}");
  68.                         if ($countryId) {
  69.                             $query "country_id = {$countryId}";
  70.                         }
  71.                         break;
  72.                     default:
  73.                         break;
  74.                 }
  75.                 if ($query) {
  76.                     $this->connection->executeQuery("UPDATE actuliaison SET {$query} WHERE idactuliaison = {$relationId}");
  77.                 } else {
  78.                     echo "Missing Relation.id {$relationId}\n";
  79.                 }
  80.             }
  81.         }
  82.         echo "Finished. {$missing} Relations have been deleted\n";
  83.         $this->addSql('ALTER TABLE actuliaison ADD CONSTRAINT FK_16BB390350BCF2E2 FOREIGN KEY (idactu) REFERENCES actu (idactu)');
  84.         $this->addSql('ALTER TABLE actuliaison ADD CONSTRAINT FK_16BB390399E6F5DF FOREIGN KEY (player_id) REFERENCES joueur (idjoueur)');
  85.         $this->addSql('ALTER TABLE actuliaison ADD CONSTRAINT FK_16BB390358AFC4DE FOREIGN KEY (league_id) REFERENCES ligue (idligue)');
  86.         $this->addSql('ALTER TABLE actuliaison ADD CONSTRAINT FK_16BB3903296CD8AE FOREIGN KEY (team_id) REFERENCES equipe (idequipe)');
  87.         $this->addSql('ALTER TABLE actuliaison ADD CONSTRAINT FK_16BB3903E48FD905 FOREIGN KEY (game_id) REFERENCES `match` (idmatch)');
  88.         $this->addSql('ALTER TABLE actuliaison ADD CONSTRAINT FK_16BB3903F92F3E70 FOREIGN KEY (country_id) REFERENCES pays (idpays)');
  89.         $this->addSql('CREATE INDEX IDX_16BB390399E6F5DF ON actuliaison (player_id)');
  90.         $this->addSql('CREATE INDEX IDX_16BB390358AFC4DE ON actuliaison (league_id)');
  91.         $this->addSql('CREATE INDEX IDX_16BB3903296CD8AE ON actuliaison (team_id)');
  92.         $this->addSql('CREATE INDEX IDX_16BB3903E48FD905 ON actuliaison (game_id)');
  93.         $this->addSql('CREATE INDEX IDX_16BB3903F92F3E70 ON actuliaison (country_id)');
  94.     }
  95.     public function down(Schema $schema): void
  96.     {
  97.         // this down() migration is auto-generated, please modify it to your needs
  98.         $this->addSql('ALTER TABLE actuliaison DROP FOREIGN KEY FK_16BB390350BCF2E2');
  99.         $this->addSql('ALTER TABLE actuliaison DROP FOREIGN KEY FK_16BB390399E6F5DF');
  100.         $this->addSql('ALTER TABLE actuliaison DROP FOREIGN KEY FK_16BB390358AFC4DE');
  101.         $this->addSql('ALTER TABLE actuliaison DROP FOREIGN KEY FK_16BB3903296CD8AE');
  102.         $this->addSql('ALTER TABLE actuliaison DROP FOREIGN KEY FK_16BB3903E48FD905');
  103.         $this->addSql('ALTER TABLE actuliaison DROP FOREIGN KEY FK_16BB3903F92F3E70');
  104.         $this->addSql('DROP INDEX IDX_16BB390399E6F5DF ON actuliaison');
  105.         $this->addSql('DROP INDEX IDX_16BB390358AFC4DE ON actuliaison');
  106.         $this->addSql('DROP INDEX IDX_16BB3903296CD8AE ON actuliaison');
  107.         $this->addSql('DROP INDEX IDX_16BB3903E48FD905 ON actuliaison');
  108.         $this->addSql('DROP INDEX IDX_16BB3903F92F3E70 ON actuliaison');
  109.         $this->addSql('ALTER TABLE actuliaison DROP player_id, DROP league_id, DROP team_id, DROP game_id, DROP country_id');
  110.     }
  111. }