59 lines
1.9 KiB
PHP
59 lines
1.9 KiB
PHP
<?php
|
|||
|
|
/**
|
||
|
|
* Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
|
||
|
|
*
|
||
|
|
* Licensed under The MIT License
|
||
|
|
* Redistributions of files must retain the above copyright notice.
|
||
|
|
*
|
||
|
|
* @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
|
||
|
|
* @link http://cakephp.org CakePHP(tm) Project
|
||
|
|
* @license http://www.opensource.org/licenses/mit-license.php MIT License
|
||
|
|
*/
|
||
|
|
namespace Migrations\Util;
|
||
|
|
|
||
|
|
use Cake\Datasource\ConnectionManager;
|
||
|
|
use Symfony\Component\Console\Input\InputInterface;
|
||
|
|
use Symfony\Component\Console\Output\OutputInterface;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Trait gathering schema collection used for caching
|
||
|
|
*/
|
||
|
|
trait SchemaTrait
|
||
|
|
{
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Helper method to get the schema collection.
|
||
|
|
*
|
||
|
|
* @param \Symfony\Component\Console\Input\InputInterface $input Input object.
|
||
|
|
* @param \Symfony\Component\Console\Input\OutputInterface $output Output object.
|
||
|
|
* @return null|\Cake\Database\Schema\Collection
|
||
|
|
*/
|
||
|
|
protected function _getSchema(InputInterface $input, OutputInterface $output)
|
||
|
|
{
|
||
|
|
$connectionName = $input->getOption('connection');
|
||
|
|
$connection = ConnectionManager::get($connectionName);
|
||
|
|
|
||
|
|
if (!method_exists($connection, 'getSchemaCollection')) {
|
||
|
|
$msg = sprintf(
|
||
|
|
'The "%s" connection is not compatible with orm caching, ' .
|
||
|
|
'as it does not implement a "getSchemaCollection()" method.',
|
||
|
|
$connectionName
|
||
|
|
);
|
||
|
|
$output->writeln('<error>' . $msg . '</error>');
|
||
|
|
|
||
|
|
return null;
|
||
|
|
}
|
||
|
|
|
||
|
|
$config = $connection->config();
|
||
|
|
|
||
|
|
if (empty($config['cacheMetadata'])) {
|
||
|
|
$output->writeln('Metadata cache was disabled in config. Enable to cache or clear.');
|
||
|
|
|
||
|
|
return null;
|
||
|
|
}
|
||
|
|
|
||
|
|
$connection->cacheMetadata(true);
|
||
|
|
|
||
|
|
return $connection->getSchemaCollection();
|
||
|
|
}
|
||
|
|
}
|