Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 2 |
CRAP | |
0.00% |
0 / 24 |
DbCommandBase | |
0.00% |
0 / 1 |
|
0.00% |
0 / 2 |
30 | |
0.00% |
0 / 24 |
configure | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
getDatabaseConnection | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 20 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\Core\Command\DbCommandBase. | |
*/ | |
namespace Drupal\Core\Command; | |
use Drupal\Core\Database\Database; | |
use Symfony\Component\Console\Command\Command; | |
use Symfony\Component\Console\Input\InputInterface; | |
use Symfony\Component\Console\Input\InputOption; | |
/** | |
* Base command that abstracts handling of database connection arguments. | |
*/ | |
class DbCommandBase extends Command { | |
/** | |
* {@inheritdoc} | |
*/ | |
protected function configure() { | |
$this->addOption('database', NULL, InputOption::VALUE_OPTIONAL, 'The database connection name to use.', 'default') | |
->addOption('database-url', 'db-url', InputOption::VALUE_OPTIONAL, 'A database url to parse and use as the database connection.') | |
->addOption('prefix', NULL, InputOption::VALUE_OPTIONAL, 'Override or set the table prefix used in the database connection.'); | |
} | |
/** | |
* Parse input options decide on a database. | |
* | |
* @param \Symfony\Component\Console\Input\InputInterface $input | |
* Input object. | |
* @return \Drupal\Core\Database\Connection | |
*/ | |
protected function getDatabaseConnection(InputInterface $input) { | |
// Load connection from a url. | |
if ($input->getOption('database-url')) { | |
// @todo this could probably be refactored to not use a global connection. | |
// Ensure database connection isn't set. | |
if (Database::getConnectionInfo('db-tools')) { | |
throw new \RuntimeException('Database "db-tools" is already defined. Cannot define database provided.'); | |
} | |
$info = Database::convertDbUrlToConnectionInfo($input->getOption('database-url'), \Drupal::root()); | |
Database::addConnectionInfo('db-tools', 'default', $info); | |
$key = 'db-tools'; | |
} | |
else { | |
$key = $input->getOption('database'); | |
} | |
// If they supplied a prefix, replace it in the connection information. | |
$prefix = $input->getOption('prefix'); | |
if ($prefix) { | |
$info = Database::getConnectionInfo($key)['default']; | |
$info['prefix']['default'] = $prefix; | |
Database::removeConnection($key); | |
Database::addConnectionInfo($key, 'default', $info); | |
} | |
return Database::getConnection('default', $key); | |
} | |
} |