|
|
|
@ -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]));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|