Ensured latitude and longitude are set as float in DB

This commit is contained in:
Alejandro Celaya 2020-01-06 22:31:00 +01:00
parent 2e0f8067aa
commit 7748dd7cef
3 changed files with 67 additions and 7 deletions

View File

@ -0,0 +1,52 @@
<?php
declare(strict_types=1);
namespace ShlinkMigrations;
use Doctrine\DBAL\DBALException;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\DBAL\Types\Type;
use Doctrine\DBAL\Types\Types;
use Doctrine\Migrations\AbstractMigration;
final class Version20200105165647 extends AbstractMigration
{
private const COLUMNS = ['latitude', 'longitude'];
public function preUp(Schema $schema): void
{
foreach (self::COLUMNS as $columnName) {
$qb = $this->connection->createQueryBuilder();
$qb->update('visit_locations')
->set($columnName, '"0"')
->where($columnName . '=""')
->orWhere($columnName . ' IS NULL')
->execute();
}
}
/**
* @throws DBALException
*/
public function up(Schema $schema): void
{
$visitLocations = $schema->getTable('visit_locations');
foreach (self::COLUMNS as $columnName) {
$visitLocations->getColumn($columnName)->setType(Type::getType(Types::FLOAT));
}
}
/**
* @throws DBALException
*/
public function down(Schema $schema): void
{
$visitLocations = $schema->getTable('visit_locations');
foreach (self::COLUMNS as $columnName) {
$visitLocations->getColumn($columnName)->setType(Type::getType(Types::STRING));
}
}
}

View File

@ -25,14 +25,22 @@ $columns = [
'country_name' => 'countryName',
'region_name' => 'regionName',
'city_name' => 'cityName',
'latitude' => 'latitude',
'longitude' => 'longitude',
'timezone' => 'timezone',
];
foreach ($columns as $columnName => $fieldName) {
$builder->createField($fieldName, Type::STRING)
->columnName($columnName)
->columnName($columnName)
->nullable()
->build();
}
$builder->createField('latitude', Type::FLOAT)
->columnName('latitude')
->nullable()
->build();
$builder->createField('longitude', Type::FLOAT)
->columnName('longitude')
->nullable()
->build();
}

View File

@ -15,10 +15,10 @@ use Shlinkio\Shlink\Core\Visit\Model\VisitLocationInterface;
class Visit extends AbstractEntity implements JsonSerializable
{
private string $referer;
private string $referer = '';
private Chronos $date;
private ?string $remoteAddr;
private string $userAgent;
private ?string $remoteAddr = null;
private string $userAgent = '';
private ShortUrl $shortUrl;
private ?VisitLocation $visitLocation = null;