PHRAS-3820_fix-patch-3.8-to-4.1 (#4263)

* add --dry to bin/setup system:upgrade ; trace patches ; allow MailChecker to fail (when table 'usr' does not exist anymore...)

* MailChecker now works on 'usr' and 'Users' table

* typo

* typo again

* don't create appbox.Registrations if exists

* don't create tables if already exists

* Revert "don't create appbox.Registrations if exists"

This reverts commit 652131aff7.

* drop (empty ?) tables already created before patch

* reorder drop / delete to follow fk rules

* fix typo that makes ApiMigration to run event when table exists ; Move some drop tables at the end
This commit is contained in:
jygaulier
2023-03-09 13:45:39 +01:00
committed by GitHub
parent d5be724ec2
commit a6260ef149
32 changed files with 250 additions and 114 deletions

View File

@@ -14,6 +14,8 @@ use Alchemy\Phrasea\Core\Connection\ConnectionSettings;
use Alchemy\Phrasea\Core\Database\DatabaseMaintenanceService;
use Alchemy\Phrasea\Core\Version as PhraseaVersion;
use Doctrine\DBAL\Connection;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
abstract class base implements cache_cacheableInterface
{
@@ -226,11 +228,14 @@ abstract class base implements cache_cacheableInterface
}
}
protected function upgradeDb($applyPatches)
protected function upgradeDb($applyPatches, InputInterface $input, OutputInterface $output)
{
$dry = !!$input->getOption('dry');
$output->writeln(sprintf("into upgradeDb(applyPatches=%s) for base \"%s\"", $applyPatches?'true':'false', $this->get_dbname()));
$service = new DatabaseMaintenanceService($this->app, $this->connection);
return $service->upgradeDatabase($this, $applyPatches);
return $service->upgradeDatabase($this, $applyPatches, $input, $output);
}
/**
@@ -276,10 +281,12 @@ abstract class base implements cache_cacheableInterface
return $this;
}
public function apply_patches($from, $to, $post_process)
public function apply_patches($from, $to, $post_process, InputInterface $input, OutputInterface $output)
{
$dry = !!$input->getOption('dry');
$service = new DatabaseMaintenanceService($this->app, $this->connection);
return $service->applyPatches($this, $from, $to, $post_process);
return $service->applyPatches($this, $from, $to, $post_process, $input, $output);
}
}