Version20201023090929.php 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <?php
  2. declare(strict_types=1);
  3. namespace ShlinkMigrations;
  4. use Doctrine\DBAL\Schema\Schema;
  5. use Doctrine\DBAL\Types\Types;
  6. use Doctrine\Migrations\AbstractMigration;
  7. final class Version20201023090929 extends AbstractMigration
  8. {
  9. private const IMPORT_SOURCE_COLUMN = 'import_source';
  10. public function up(Schema $schema): void
  11. {
  12. $shortUrls = $schema->getTable('short_urls');
  13. $this->skipIf($shortUrls->hasColumn(self::IMPORT_SOURCE_COLUMN));
  14. $shortUrls->addColumn(self::IMPORT_SOURCE_COLUMN, Types::STRING, [
  15. 'length' => 255,
  16. 'notnull' => false,
  17. ]);
  18. $shortUrls->addColumn('import_original_short_code', Types::STRING, [
  19. 'length' => 255,
  20. 'notnull' => false,
  21. ]);
  22. $shortUrls->addUniqueIndex(
  23. [self::IMPORT_SOURCE_COLUMN, 'import_original_short_code', 'domain_id'],
  24. 'unique_imports',
  25. );
  26. }
  27. public function down(Schema $schema): void
  28. {
  29. $shortUrls = $schema->getTable('short_urls');
  30. $this->skipIf(! $shortUrls->hasColumn(self::IMPORT_SOURCE_COLUMN));
  31. $shortUrls->dropColumn(self::IMPORT_SOURCE_COLUMN);
  32. $shortUrls->dropColumn('import_original_short_code');
  33. $shortUrls->dropIndex('unique_imports');
  34. }
  35. /**
  36. * @fixme Workaround for https://github.com/doctrine/migrations/issues/1104
  37. */
  38. public function isTransactional(): bool
  39. {
  40. return false;
  41. }
  42. }