diff --git a/apps/dav/appinfo/Migrations/Version20190823065724.php b/apps/dav/appinfo/Migrations/Version20190823065724.php new file mode 100644 index 000000000000..f949a11381cd --- /dev/null +++ b/apps/dav/appinfo/Migrations/Version20190823065724.php @@ -0,0 +1,62 @@ + + * + * @copyright Copyright (c) 2019, ownCloud GmbH + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see + * + */ + +namespace OCA\dav\Migrations; + +use Doctrine\DBAL\Schema\Schema; +use OCP\IDBConnection; +use OCP\Migration\ISchemaMigration; + +/** + * Add NULL constraint to fileid column for properties table. + * The fileid column should not accept null values in the properties table. + */ +class Version20190823065724 implements ISchemaMigration { + /** @var IDBConnection */ + private $dbConnection; + + public function __construct(IDBConnection $dbConnection) { + $this->dbConnection = $dbConnection; + } + + public function changeSchema(Schema $schema, array $options) { + $prefix = $options['tablePrefix']; + + $table = $schema->getTable("${prefix}properties"); + $column = $table->getColumn('fileid'); + /** + * If the fileid column's notnull is set to false then + * make sure before altering the column, that no entry + * in the table has fileid with null. Else the migration + * would fail. The below check does the same. + */ + if ($column->getNotnull() !== true) { + $qb = $this->dbConnection->getQueryBuilder(); + $qb->delete('properties') + ->where($qb->expr()->isNull('fileid')); + $qb->execute(); + + $table->changeColumn('fileid', [ + 'notnull' => true, + ]); + } + } +} diff --git a/apps/dav/appinfo/info.xml b/apps/dav/appinfo/info.xml index 6e7f9e55b34f..125ff50f72bb 100644 --- a/apps/dav/appinfo/info.xml +++ b/apps/dav/appinfo/info.xml @@ -5,7 +5,7 @@ ownCloud WebDAV endpoint AGPL owncloud.org - 0.4.0 + 0.5.0 true