Version20210207100807.php 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  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. use Shlinkio\Shlink\Core\Entity\Visit;
  8. use Shlinkio\Shlink\Core\Model\Visitor;
  9. final class Version20210207100807 extends AbstractMigration
  10. {
  11. public function up(Schema $schema): void
  12. {
  13. $visits = $schema->getTable('visits');
  14. $this->skipIf($visits->hasColumn('visited_url'));
  15. $shortUrlId = $visits->getColumn('short_url_id');
  16. $shortUrlId->setNotnull(false);
  17. $visits->addColumn('visited_url', Types::STRING, [
  18. 'length' => Visitor::VISITED_URL_MAX_LENGTH,
  19. 'notnull' => false,
  20. ]);
  21. $visits->addColumn('type', Types::STRING, [
  22. 'length' => 255,
  23. 'default' => Visit::TYPE_VALID_SHORT_URL,
  24. ]);
  25. }
  26. public function down(Schema $schema): void
  27. {
  28. $visits = $schema->getTable('visits');
  29. $this->skipIf(! $visits->hasColumn('visited_url'));
  30. $shortUrlId = $visits->getColumn('short_url_id');
  31. $shortUrlId->setNotnull(true);
  32. $visits->dropColumn('visited_url');
  33. $visits->dropColumn('type');
  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. }