diff options
Diffstat (limited to 'core/Migrations/Version13000Date20170718121200.php')
-rw-r--r-- | core/Migrations/Version13000Date20170718121200.php | 105 |
1 files changed, 101 insertions, 4 deletions
diff --git a/core/Migrations/Version13000Date20170718121200.php b/core/Migrations/Version13000Date20170718121200.php index 2a47bb52cfc..3acdc3122e3 100644 --- a/core/Migrations/Version13000Date20170718121200.php +++ b/core/Migrations/Version13000Date20170718121200.php @@ -31,11 +31,37 @@ namespace OC\Core\Migrations; use Doctrine\DBAL\Types\Types; use OCP\DB\ISchemaWrapper; +use OCP\IDBConnection; use OCP\Migration\IOutput; use OCP\Migration\SimpleMigrationStep; class Version13000Date20170718121200 extends SimpleMigrationStep { + /** @var IDBConnection */ + private $connection; + + public function __construct(IDBConnection $connection) { + $this->connection = $connection; + } + + public function preSchemaChange(IOutput $output, \Closure $schemaClosure, array $options) { + /** @var ISchemaWrapper $schema */ + $schema = $schemaClosure(); + + if (!$schema->hasTable('properties')) { + return; + } + // in case we have a properties table from oc we drop it since we will only migrate + // the dav_properties values in the postSchemaChange step + $table = $schema->getTable('properties'); + if ($table->hasColumn('fileid')) { + $qb = $this->connection->getQueryBuilder(); + $qb->delete('properties'); + $qb->execute(); + } + } + + /** * @param IOutput $output * @param \Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper` @@ -122,6 +148,15 @@ class Version13000Date20170718121200 extends SimpleMigrationStep { $table->addIndex(['root_id'], 'mounts_root_index'); $table->addIndex(['mount_id'], 'mounts_mount_id_index'); $table->addUniqueIndex(['user_id', 'root_id'], 'mounts_user_root_index'); + } else { + $table = $schema->getTable('mounts'); + $table->addColumn('mount_id', Types::BIGINT, [ + 'notnull' => false, + 'length' => 20, + ]); + if (!$table->hasIndex('mounts_mount_id_index')) { + $table->addIndex(['mount_id'], 'mounts_mount_id_index'); + } } if (!$schema->hasTable('mimetypes')) { @@ -321,6 +356,27 @@ class Version13000Date20170718121200 extends SimpleMigrationStep { $table->setPrimaryKey(['id']); $table->addIndex(['userid'], 'property_index'); $table->addIndex(['userid', 'propertypath'], 'properties_path_index'); + } else { + $table = $schema->getTable('properties'); + if ($table->hasColumn('propertytype')) { + $table->dropColumn('propertytype'); + } + if ($table->hasColumn('fileid')) { + $table->dropColumn('fileid'); + } + if (!$table->hasColumn('propertypath')) { + $table->addColumn('propertypath', 'string', [ + 'notnull' => true, + 'length' => 255, + ]); + } + if (!$table->hasColumn('userid')) { + $table->addColumn('userid', 'string', [ + 'notnull' => false, + 'length' => 64, + 'default' => '', + ]); + } } if (!$schema->hasTable('share')) { @@ -416,6 +472,14 @@ class Version13000Date20170718121200 extends SimpleMigrationStep { $table->addIndex(['parent'], 'parent_index'); $table->addIndex(['uid_owner'], 'owner_index'); $table->addIndex(['uid_initiator'], 'initiator_index'); + } else { + $table = $schema->getTable('share'); + if (!$table->hasColumn('password')) { + $table->addColumn('password', 'string', [ + 'notnull' => false, + 'length' => 255, + ]); + } } if (!$schema->hasTable('jobs')) { @@ -506,25 +570,25 @@ class Version13000Date20170718121200 extends SimpleMigrationStep { 'default' => '', ]); $table->addColumn('type', 'smallint', [ - 'notnull' => true, + 'notnull' => false, 'length' => 2, 'default' => 0, 'unsigned' => true, ]); $table->addColumn('remember', 'smallint', [ - 'notnull' => true, + 'notnull' => false, 'length' => 1, 'default' => 0, 'unsigned' => true, ]); $table->addColumn('last_activity', 'integer', [ - 'notnull' => true, + 'notnull' => false, 'length' => 4, 'default' => 0, 'unsigned' => true, ]); $table->addColumn('last_check', 'integer', [ - 'notnull' => true, + 'notnull' => false, 'length' => 4, 'default' => 0, 'unsigned' => true, @@ -535,6 +599,11 @@ class Version13000Date20170718121200 extends SimpleMigrationStep { $table->setPrimaryKey(['id']); $table->addUniqueIndex(['token'], 'authtoken_token_index'); $table->addIndex(['last_activity'], 'authtoken_last_activity_idx'); + } else { + $table = $schema->getTable('authtoken'); + $table->addColumn('scope', 'text', [ + 'notnull' => false, + ]); } if (!$schema->hasTable('bruteforce_attempts')) { @@ -937,4 +1006,32 @@ class Version13000Date20170718121200 extends SimpleMigrationStep { } return $schema; } + + public function postSchemaChange(IOutput $output, \Closure $schemaClosure, array $options) { + /** @var ISchemaWrapper $schema */ + $schema = $schemaClosure(); + if (!$schema->hasTable('dav_properties')) { + return; + } + $query = $this->connection->getQueryBuilder(); + $query->select('*') + ->from('dav_properties'); + + $insert = $this->connection->getQueryBuilder(); + $insert->insert('properties') + ->setValue('propertypath', $insert->createParameter('propertypath')) + ->setValue('propertyname', $insert->createParameter('propertyname')) + ->setValue('propertyvalue', $insert->createParameter('propertyvalue')) + ->setValue('userid', $insert->createParameter('userid')); + + $result = $query->execute(); + while ($row = $result->fetch()) { + preg_match('/(calendar)\/([A-z0-9-@_]+)\//', $row['propertypath'], $match); + $insert->setParameter('propertypath', (string) $row['propertypath']) + ->setParameter('propertyname', (string) $row['propertyname']) + ->setParameter('propertyvalue', (string) $row['propertyvalue']) + ->setParameter('userid', (string) ($match[2] ?? '')); + $insert->execute(); + } + } } |