mirror of
https://github.com/shlinkio/shlink.git
synced 2024-12-22 15:13:59 -06:00
Add migration to update long URLs columns to text type
This commit is contained in:
parent
8f954151ca
commit
d1a6e60b01
@ -25,7 +25,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com), and this
|
||||
* [#1786](https://github.com/shlinkio/shlink/issues/1786) Run API tests with RoadRunner by default.
|
||||
* [#2008](https://github.com/shlinkio/shlink/issues/2008) Update to Doctrine ORM 3.0.
|
||||
* [#2010](https://github.com/shlinkio/shlink/issues/2010) Update to Symfony 7.0 components.
|
||||
* [#2016](https://github.com/shlinkio/shlink/issues/2016) Simplify and improve how code coverage is generated in API and CLI tests".
|
||||
* [#2016](https://github.com/shlinkio/shlink/issues/2016) Simplify and improve how code coverage is generated in API and CLI tests.
|
||||
* [#1674](https://github.com/shlinkio/shlink/issues/1674) Database columns persisting long URLs have now `TEXT` type, which allows for much longer values.
|
||||
|
||||
### Deprecated
|
||||
* *Nothing*
|
||||
|
@ -6,18 +6,47 @@ namespace ShlinkMigrations;
|
||||
|
||||
use Doctrine\DBAL\Platforms\MySQLPlatform;
|
||||
use Doctrine\DBAL\Schema\Schema;
|
||||
use Doctrine\DBAL\Types\Type;
|
||||
use Doctrine\DBAL\Types\Types;
|
||||
use Doctrine\Migrations\AbstractMigration;
|
||||
|
||||
use function in_array;
|
||||
|
||||
final class Version20240220214031 extends AbstractMigration
|
||||
{
|
||||
private const DOMAINS_COLUMNS = ['base_url_redirect', 'regular_not_found_redirect', 'invalid_short_url_redirect'];
|
||||
private const TEXT_COLUMNS = [
|
||||
'domains' => self::DOMAINS_COLUMNS,
|
||||
'device_long_urls' => ['long_url'],
|
||||
'short_urls' => ['original_url'],
|
||||
];
|
||||
|
||||
public function up(Schema $schema): void
|
||||
{
|
||||
$textType = Type::getType(Types::TEXT);
|
||||
|
||||
foreach (self::TEXT_COLUMNS as $table => $columns) {
|
||||
$t = $schema->getTable($table);
|
||||
|
||||
foreach ($columns as $column) {
|
||||
$c = $t->getColumn($column);
|
||||
|
||||
if ($c->getType() === $textType) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (in_array($column, self::DOMAINS_COLUMNS, true)) {
|
||||
// Domain columns had an incorrect length
|
||||
$t->modifyColumn($column, ['length' => 2048]);
|
||||
}
|
||||
$c->setType($textType);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function down(Schema $schema): void
|
||||
{
|
||||
|
||||
// Can't revert from TEXT to STRING, as it's bigger
|
||||
}
|
||||
|
||||
public function isTransactional(): bool
|
||||
|
Loading…
Reference in New Issue
Block a user