mirror of
https://github.com/shlinkio/shlink.git
synced 2024-12-23 15:40:33 -06:00
Merge pull request #611 from acelaya-forks/feature/db-migrate-syntax-error
Feature/db migrate syntax error
This commit is contained in:
commit
1a8bf54e8b
24
CHANGELOG.md
24
CHANGELOG.md
@ -4,6 +4,30 @@ All notable changes to this project will be documented in this file.
|
|||||||
|
|
||||||
The format is based on [Keep a Changelog](https://keepachangelog.com), and this project adheres to [Semantic Versioning](https://semver.org).
|
The format is based on [Keep a Changelog](https://keepachangelog.com), and this project adheres to [Semantic Versioning](https://semver.org).
|
||||||
|
|
||||||
|
## [Unreleased]
|
||||||
|
|
||||||
|
#### Added
|
||||||
|
|
||||||
|
* *Nothing*
|
||||||
|
|
||||||
|
#### Changed
|
||||||
|
|
||||||
|
* *Nothing*
|
||||||
|
|
||||||
|
#### Deprecated
|
||||||
|
|
||||||
|
* *Nothing*
|
||||||
|
|
||||||
|
#### Removed
|
||||||
|
|
||||||
|
* *Nothing*
|
||||||
|
|
||||||
|
#### Fixed
|
||||||
|
|
||||||
|
* [#607](https://github.com/shlinkio/shlink/issues/607) Added missing info on UPGRADE.md doc.
|
||||||
|
* [#610](https://github.com/shlinkio/shlink/issues/610) Fixed use of hardcoded quotes on a database migration which makes it fail on postgres.
|
||||||
|
|
||||||
|
|
||||||
## 2.0.0 - 2020-01-08
|
## 2.0.0 - 2020-01-08
|
||||||
|
|
||||||
#### Added
|
#### Added
|
||||||
|
@ -9,18 +9,35 @@ use Doctrine\DBAL\Schema\Schema;
|
|||||||
use Doctrine\DBAL\Types\Types;
|
use Doctrine\DBAL\Types\Types;
|
||||||
use Doctrine\Migrations\AbstractMigration;
|
use Doctrine\Migrations\AbstractMigration;
|
||||||
|
|
||||||
|
use function Functional\some;
|
||||||
|
|
||||||
final class Version20200105165647 extends AbstractMigration
|
final class Version20200105165647 extends AbstractMigration
|
||||||
{
|
{
|
||||||
private const COLUMNS = ['lat' => 'latitude', 'lon' => 'longitude'];
|
private const COLUMNS = ['lat' => 'latitude', 'lon' => 'longitude'];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @throws DBALException
|
||||||
|
*/
|
||||||
public function preUp(Schema $schema): void
|
public function preUp(Schema $schema): void
|
||||||
{
|
{
|
||||||
|
$visitLocations = $schema->getTable('visit_locations');
|
||||||
|
$this->skipIf(some(
|
||||||
|
self::COLUMNS,
|
||||||
|
fn (string $v, string $newColName) => $visitLocations->hasColumn($newColName),
|
||||||
|
), 'New columns already exist');
|
||||||
|
|
||||||
foreach (self::COLUMNS as $columnName) {
|
foreach (self::COLUMNS as $columnName) {
|
||||||
$qb = $this->connection->createQueryBuilder();
|
$qb = $this->connection->createQueryBuilder();
|
||||||
$qb->update('visit_locations')
|
$qb->update('visit_locations')
|
||||||
->set($columnName, '"0"')
|
->set($columnName, ':zeroValue')
|
||||||
->where($columnName . '=""')
|
->where($qb->expr()->orX(
|
||||||
->orWhere($columnName . ' IS NULL')
|
$qb->expr()->eq($columnName, ':emptyString'),
|
||||||
|
$qb->expr()->isNull($columnName),
|
||||||
|
))
|
||||||
|
->setParameters([
|
||||||
|
'zeroValue' => '0',
|
||||||
|
'emptyString' => '',
|
||||||
|
])
|
||||||
->execute();
|
->execute();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -33,16 +50,24 @@ final class Version20200105165647 extends AbstractMigration
|
|||||||
$visitLocations = $schema->getTable('visit_locations');
|
$visitLocations = $schema->getTable('visit_locations');
|
||||||
|
|
||||||
foreach (self::COLUMNS as $newName => $oldName) {
|
foreach (self::COLUMNS as $newName => $oldName) {
|
||||||
$visitLocations->addColumn($newName, Types::FLOAT);
|
$visitLocations->addColumn($newName, Types::FLOAT, [
|
||||||
|
'default' => '0.0',
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @throws DBALException
|
||||||
|
*/
|
||||||
public function postUp(Schema $schema): void
|
public function postUp(Schema $schema): void
|
||||||
{
|
{
|
||||||
|
$platformName = $this->connection->getDatabasePlatform()->getName();
|
||||||
|
$castType = $platformName === 'postgres' ? 'DOUBLE PRECISION' : 'DECIMAL(9,2)';
|
||||||
|
|
||||||
foreach (self::COLUMNS as $newName => $oldName) {
|
foreach (self::COLUMNS as $newName => $oldName) {
|
||||||
$qb = $this->connection->createQueryBuilder();
|
$qb = $this->connection->createQueryBuilder();
|
||||||
$qb->update('visit_locations')
|
$qb->update('visit_locations')
|
||||||
->set($newName, $oldName)
|
->set($newName, 'CAST(' . $oldName . ' AS ' . $castType . ')')
|
||||||
->execute();
|
->execute();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,8 @@ use Doctrine\DBAL\Schema\Schema;
|
|||||||
use Doctrine\DBAL\Types\Types;
|
use Doctrine\DBAL\Types\Types;
|
||||||
use Doctrine\Migrations\AbstractMigration;
|
use Doctrine\Migrations\AbstractMigration;
|
||||||
|
|
||||||
|
use function Functional\none;
|
||||||
|
|
||||||
final class Version20200106215144 extends AbstractMigration
|
final class Version20200106215144 extends AbstractMigration
|
||||||
{
|
{
|
||||||
private const COLUMNS = ['latitude', 'longitude'];
|
private const COLUMNS = ['latitude', 'longitude'];
|
||||||
@ -19,6 +21,10 @@ final class Version20200106215144 extends AbstractMigration
|
|||||||
public function up(Schema $schema): void
|
public function up(Schema $schema): void
|
||||||
{
|
{
|
||||||
$visitLocations = $schema->getTable('visit_locations');
|
$visitLocations = $schema->getTable('visit_locations');
|
||||||
|
$this->skipIf(none(
|
||||||
|
self::COLUMNS,
|
||||||
|
fn (string $oldColName) => $visitLocations->hasColumn($oldColName),
|
||||||
|
), 'Old columns do not exist');
|
||||||
|
|
||||||
foreach (self::COLUMNS as $colName) {
|
foreach (self::COLUMNS as $colName) {
|
||||||
$visitLocations->dropColumn($colName);
|
$visitLocations->dropColumn($colName);
|
||||||
|
Loading…
Reference in New Issue
Block a user