|
|
@@ -27,11 +27,13 @@ |
|
|
|
*/ |
|
|
|
namespace OC\DB; |
|
|
|
|
|
|
|
use Doctrine\DBAL\Connection; |
|
|
|
use Doctrine\DBAL\Exception; |
|
|
|
use Doctrine\DBAL\Platforms\MySQLPlatform; |
|
|
|
use Doctrine\DBAL\Schema\AbstractAsset; |
|
|
|
use Doctrine\DBAL\Schema\Comparator; |
|
|
|
use Doctrine\DBAL\Schema\Schema; |
|
|
|
use Doctrine\DBAL\Schema\SchemaDiff; |
|
|
|
use Doctrine\DBAL\Types\StringType; |
|
|
|
use Doctrine\DBAL\Types\Type; |
|
|
|
use OCP\IConfig; |
|
|
@@ -41,34 +43,27 @@ use function preg_match; |
|
|
|
|
|
|
|
class Migrator { |
|
|
|
|
|
|
|
/** @var \Doctrine\DBAL\Connection */ |
|
|
|
/** @var Connection */ |
|
|
|
protected $connection; |
|
|
|
|
|
|
|
/** @var IConfig */ |
|
|
|
protected $config; |
|
|
|
|
|
|
|
/** @var EventDispatcherInterface */ |
|
|
|
/** @var ?EventDispatcherInterface */ |
|
|
|
private $dispatcher; |
|
|
|
|
|
|
|
/** @var bool */ |
|
|
|
private $noEmit = false; |
|
|
|
|
|
|
|
/** |
|
|
|
* @param \Doctrine\DBAL\Connection $connection |
|
|
|
* @param IConfig $config |
|
|
|
* @param EventDispatcherInterface $dispatcher |
|
|
|
*/ |
|
|
|
public function __construct(\Doctrine\DBAL\Connection $connection, |
|
|
|
public function __construct(Connection $connection, |
|
|
|
IConfig $config, |
|
|
|
EventDispatcherInterface $dispatcher = null) { |
|
|
|
?EventDispatcherInterface $dispatcher = null) { |
|
|
|
$this->connection = $connection; |
|
|
|
$this->config = $config; |
|
|
|
$this->dispatcher = $dispatcher; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @param \Doctrine\DBAL\Schema\Schema $targetSchema |
|
|
|
* |
|
|
|
* @throws Exception |
|
|
|
*/ |
|
|
|
public function migrate(Schema $targetSchema) { |
|
|
@@ -77,7 +72,6 @@ class Migrator { |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @param \Doctrine\DBAL\Schema\Schema $targetSchema |
|
|
|
* @return string |
|
|
|
*/ |
|
|
|
public function generateChangeScript(Schema $targetSchema) { |
|
|
@@ -108,11 +102,9 @@ class Migrator { |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @param Schema $targetSchema |
|
|
|
* @param \Doctrine\DBAL\Connection $connection |
|
|
|
* @return \Doctrine\DBAL\Schema\SchemaDiff |
|
|
|
* @return SchemaDiff |
|
|
|
*/ |
|
|
|
protected function getDiff(Schema $targetSchema, \Doctrine\DBAL\Connection $connection) { |
|
|
|
protected function getDiff(Schema $targetSchema, Connection $connection) { |
|
|
|
// adjust varchar columns with a length higher then getVarcharMaxLength to clob |
|
|
|
foreach ($targetSchema->getTables() as $table) { |
|
|
|
foreach ($table->getColumns() as $column) { |
|
|
@@ -153,12 +145,9 @@ class Migrator { |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @param \Doctrine\DBAL\Schema\Schema $targetSchema |
|
|
|
* @param \Doctrine\DBAL\Connection $connection |
|
|
|
* |
|
|
|
* @throws Exception |
|
|
|
*/ |
|
|
|
protected function applySchema(Schema $targetSchema, \Doctrine\DBAL\Connection $connection = null) { |
|
|
|
protected function applySchema(Schema $targetSchema, Connection $connection = null) { |
|
|
|
if (is_null($connection)) { |
|
|
|
$connection = $this->connection; |
|
|
|
} |
|
|
@@ -201,6 +190,6 @@ class Migrator { |
|
|
|
if (is_null($this->dispatcher)) { |
|
|
|
return; |
|
|
|
} |
|
|
|
$this->dispatcher->dispatch('\OC\DB\Migrator::executeSql', new GenericEvent($sql, [$step + 1, $max])); |
|
|
|
$this->dispatcher->dispatch('\OC\DB\Migrator::executeSql', new GenericEvent($sql, ['step' => $step + 1, 'max' => $max])); |
|
|
|
} |
|
|
|
} |