mirror of
https://github.com/werkraum-media/events.git
synced 2024-11-21 17:16:11 +01:00
Prevent exception due to missing database columns in update wizard (#29)
This commit is contained in:
parent
9f0eaac154
commit
6348b1079d
2 changed files with 44 additions and 12 deletions
|
@ -75,7 +75,8 @@ class MigrateOldLocations implements UpgradeWizardInterface
|
|||
|
||||
public function updateNecessary(): bool
|
||||
{
|
||||
return $this->getQueryBuilder()
|
||||
return $this->hasOldColumns()
|
||||
&& $this->getQueryBuilder()
|
||||
->count('*')
|
||||
->execute()
|
||||
->fetchOne() > 0
|
||||
|
@ -219,17 +220,8 @@ class MigrateOldLocations implements UpgradeWizardInterface
|
|||
|
||||
private function getQueryBuilder(): QueryBuilder
|
||||
{
|
||||
$columns = [
|
||||
'name',
|
||||
'street',
|
||||
'district',
|
||||
'city',
|
||||
'zip',
|
||||
'country',
|
||||
'phone',
|
||||
'latitude',
|
||||
'longitude',
|
||||
];
|
||||
$columns = $this->columnsToFetch();
|
||||
|
||||
$qb = $this->connectionPool->getQueryBuilderForTable('tx_events_domain_model_event');
|
||||
$qb->getRestrictions()->removeAll();
|
||||
$qb->select(...$columns);
|
||||
|
@ -257,6 +249,41 @@ class MigrateOldLocations implements UpgradeWizardInterface
|
|||
];
|
||||
}
|
||||
|
||||
private function hasOldColumns(): bool
|
||||
{
|
||||
$schema = $this->connectionPool
|
||||
->getConnectionForTable('tx_events_domain_model_event')
|
||||
->getSchemaManager()
|
||||
->createSchema()
|
||||
->getTable('tx_events_domain_model_event');
|
||||
|
||||
foreach ($this->columnsToFetch() as $column) {
|
||||
if ($schema->hasColumn($column) === false) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string[]
|
||||
*/
|
||||
private function columnsToFetch(): array
|
||||
{
|
||||
return [
|
||||
'name',
|
||||
'street',
|
||||
'district',
|
||||
'city',
|
||||
'zip',
|
||||
'country',
|
||||
'phone',
|
||||
'latitude',
|
||||
'longitude',
|
||||
];
|
||||
}
|
||||
|
||||
public static function register(): void
|
||||
{
|
||||
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install']['update'][self::class] = self::class;
|
||||
|
|
|
@ -69,6 +69,11 @@ Fixes
|
|||
There are now two database queries and the logic is moved to PHP.
|
||||
Furthermore, the test cases were extended with another situation.
|
||||
|
||||
* Do not break update wizard due to missing columns.
|
||||
The existing update wizard expects old columns to exist in order to migrate data.
|
||||
Those might not exist in newer systems where migration is not necessary.
|
||||
The wizard now properly checks for existence before querying the data.
|
||||
|
||||
Tasks
|
||||
-----
|
||||
|
||||
|
|
Loading…
Reference in a new issue