diff --git a/data/migrations/Version20200105165647.php b/data/migrations/Version20200105165647.php new file mode 100644 index 00000000..838a6f70 --- /dev/null +++ b/data/migrations/Version20200105165647.php @@ -0,0 +1,52 @@ +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)); + } + } +} diff --git a/module/Core/config/entities-mappings/Shlinkio.Shlink.Core.Entity.VisitLocation.php b/module/Core/config/entities-mappings/Shlinkio.Shlink.Core.Entity.VisitLocation.php index 073214d3..decf582a 100644 --- a/module/Core/config/entities-mappings/Shlinkio.Shlink.Core.Entity.VisitLocation.php +++ b/module/Core/config/entities-mappings/Shlinkio.Shlink.Core.Entity.VisitLocation.php @@ -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(); -} diff --git a/module/Core/src/Entity/Visit.php b/module/Core/src/Entity/Visit.php index 38c17565..8ada8176 100644 --- a/module/Core/src/Entity/Visit.php +++ b/module/Core/src/Entity/Visit.php @@ -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;