1
0
Fork 0
mirror of https://github.com/wallabag/wallabag.git synced 2025-06-27 16:36:00 +00:00

Use DATABASE_URL directly in InstallCommand

This commit is contained in:
Yassine Guedidi 2025-02-17 21:40:34 +01:00
parent 7cd46cb292
commit bc1b42a3f7
3 changed files with 19 additions and 8 deletions

View file

@ -94,7 +94,6 @@ class AppKernel extends Kernel
private function loadEnvVarsFromParameters(ContainerBuilder $container)
{
$this->setEnvVarFromParameter($container, 'DATABASE_DRIVER', 'database_driver');
$this->setEnvVarFromParameter($container, 'DATABASE_HOST', 'database_host');
$this->setEnvVarFromParameter($container, 'DATABASE_PORT', 'database_port');
$this->setEnvVarFromParameter($container, 'DATABASE_NAME', 'database_name');

View file

@ -269,7 +269,7 @@ services:
Wallabag\Command\InstallCommand:
arguments:
$databaseDriver: '%env(DATABASE_DRIVER)%'
$databaseUrl: '%env(DATABASE_URL)%'
$defaultSettings: '%wallabag.default_internal_settings%'
$defaultIgnoreOriginInstanceRules: '%wallabag.default_ignore_origin_instance_rules%'

View file

@ -7,6 +7,7 @@ use Doctrine\DBAL\Exception\DriverException;
use Doctrine\DBAL\Platforms\MySQLPlatform;
use Doctrine\DBAL\Platforms\PostgreSQLPlatform;
use Doctrine\DBAL\Platforms\SqlitePlatform;
use Doctrine\DBAL\Tools\DsnParser;
use Doctrine\Migrations\Metadata\Storage\TableMetadataStorageConfiguration;
use Doctrine\ORM\EntityManagerInterface;
use FOS\UserBundle\Event\UserEvent;
@ -41,17 +42,17 @@ class InstallCommand extends Command
private EventDispatcherInterface $dispatcher;
private UserManagerInterface $userManager;
private TableMetadataStorageConfiguration $tableMetadataStorageConfiguration;
private string $databaseDriver;
private string $databaseUrl;
private array $defaultSettings;
private array $defaultIgnoreOriginInstanceRules;
public function __construct(EntityManagerInterface $entityManager, EventDispatcherInterface $dispatcher, UserManagerInterface $userManager, TableMetadataStorageConfiguration $tableMetadataStorageConfiguration, string $databaseDriver, array $defaultSettings, array $defaultIgnoreOriginInstanceRules)
public function __construct(EntityManagerInterface $entityManager, EventDispatcherInterface $dispatcher, UserManagerInterface $userManager, TableMetadataStorageConfiguration $tableMetadataStorageConfiguration, string $databaseUrl, array $defaultSettings, array $defaultIgnoreOriginInstanceRules)
{
$this->entityManager = $entityManager;
$this->dispatcher = $dispatcher;
$this->userManager = $userManager;
$this->tableMetadataStorageConfiguration = $tableMetadataStorageConfiguration;
$this->databaseDriver = $databaseDriver;
$this->databaseUrl = $databaseUrl;
$this->defaultSettings = $defaultSettings;
$this->defaultIgnoreOriginInstanceRules = $defaultIgnoreOriginInstanceRules;
@ -103,13 +104,24 @@ class InstallCommand extends Command
$status = '<info>OK!</info>';
$help = '';
if (!\extension_loaded($this->databaseDriver)) {
/** @see \Doctrine\DBAL\DriverManager::$driverSchemeAliases */
$params = (new DsnParser([
'mysql' => 'pdo_mysql',
'mysql2' => 'pdo_mysql', // Amazon RDS, for some weird reason
'postgres' => 'pdo_pgsql',
'postgresql' => 'pdo_pgsql',
'pgsql' => 'pdo_pgsql',
'sqlite' => 'pdo_sqlite',
'sqlite3' => 'pdo_sqlite',
]))->parse($this->databaseUrl);
if (!\extension_loaded($params['driver'])) {
$fulfilled = false;
$status = '<error>ERROR!</error>';
$help = 'Database driver "' . $this->databaseDriver . '" is not installed.';
$help = 'Database driver "' . $params['driver'] . '" is not installed.';
}
$rows[] = [\sprintf($label, $this->databaseDriver), $status, $help];
$rows[] = [\sprintf($label, $params['driver']), $status, $help];
// testing if connection to the database can be established
$label = '<comment>Database connection</comment>';