mirror of
https://github.com/werkraum-media/events.git
synced 2024-11-22 01:56:10 +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
|
public function updateNecessary(): bool
|
||||||
{
|
{
|
||||||
return $this->getQueryBuilder()
|
return $this->hasOldColumns()
|
||||||
|
&& $this->getQueryBuilder()
|
||||||
->count('*')
|
->count('*')
|
||||||
->execute()
|
->execute()
|
||||||
->fetchOne() > 0
|
->fetchOne() > 0
|
||||||
|
@ -219,17 +220,8 @@ class MigrateOldLocations implements UpgradeWizardInterface
|
||||||
|
|
||||||
private function getQueryBuilder(): QueryBuilder
|
private function getQueryBuilder(): QueryBuilder
|
||||||
{
|
{
|
||||||
$columns = [
|
$columns = $this->columnsToFetch();
|
||||||
'name',
|
|
||||||
'street',
|
|
||||||
'district',
|
|
||||||
'city',
|
|
||||||
'zip',
|
|
||||||
'country',
|
|
||||||
'phone',
|
|
||||||
'latitude',
|
|
||||||
'longitude',
|
|
||||||
];
|
|
||||||
$qb = $this->connectionPool->getQueryBuilderForTable('tx_events_domain_model_event');
|
$qb = $this->connectionPool->getQueryBuilderForTable('tx_events_domain_model_event');
|
||||||
$qb->getRestrictions()->removeAll();
|
$qb->getRestrictions()->removeAll();
|
||||||
$qb->select(...$columns);
|
$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
|
public static function register(): void
|
||||||
{
|
{
|
||||||
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install']['update'][self::class] = self::class;
|
$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.
|
There are now two database queries and the logic is moved to PHP.
|
||||||
Furthermore, the test cases were extended with another situation.
|
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
|
Tasks
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue