Signed-off-by: Joas Schilling <coding@schilljs.com>tags/v22.0.0beta1
@@ -0,0 +1,69 @@ | |||
<?php | |||
declare(strict_types=1); | |||
/** | |||
* @copyright Copyright (c) 2021 Joas Schilling <coding@schilljs.com> | |||
* | |||
* @author Joas Schilling <coding@schilljs.com> | |||
* | |||
* @license GNU AGPL version 3 or any later version | |||
* | |||
* This program is free software: you can redistribute it and/or modify | |||
* it under the terms of the GNU Affero General Public License as | |||
* published by the Free Software Foundation, either version 3 of the | |||
* License, or (at your option) any later version. | |||
* | |||
* 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 | |||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
*/ | |||
namespace OC\Core\Migrations; | |||
use Closure; | |||
use Doctrine\DBAL\Types\Types; | |||
use OCP\DB\ISchemaWrapper; | |||
use OCP\Migration\IOutput; | |||
use OCP\Migration\SimpleMigrationStep; | |||
class Version21000Date20210309185126 extends SimpleMigrationStep { | |||
/** | |||
* @param IOutput $output | |||
* @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper` | |||
* @param array $options | |||
* @return null|ISchemaWrapper | |||
*/ | |||
public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper { | |||
/** @var ISchemaWrapper $schema */ | |||
$schema = $schemaClosure(); | |||
if (!$schema->hasTable('known_users')) { | |||
$table = $schema->createTable('known_users'); | |||
// Auto increment id | |||
$table->addColumn('id', Types::BIGINT, [ | |||
'autoincrement' => true, | |||
'notnull' => true, | |||
]); | |||
$table->addColumn('known_to', Types::STRING, [ | |||
'notnull' => true, | |||
'length' => 255, | |||
]); | |||
$table->addColumn('known_user', Types::STRING, [ | |||
'notnull' => true, | |||
'length' => 255, | |||
]); | |||
$table->setPrimaryKey(['id']); | |||
$table->addIndex(['known_to'], 'ku_known_to'); | |||
return $schema; | |||
} | |||
return null; | |||
} | |||
} |
@@ -948,6 +948,7 @@ return array( | |||
'OC\\Core\\Migrations\\Version21000Date20201120141228' => $baseDir . '/core/Migrations/Version21000Date20201120141228.php', | |||
'OC\\Core\\Migrations\\Version21000Date20201202095923' => $baseDir . '/core/Migrations/Version21000Date20201202095923.php', | |||
'OC\\Core\\Migrations\\Version21000Date20210119195004' => $baseDir . '/core/Migrations/Version21000Date20210119195004.php', | |||
'OC\\Core\\Migrations\\Version21000Date20210309185126' => $baseDir . '/core/Migrations/Version21000Date20210309185126.php', | |||
'OC\\Core\\Migrations\\Version22000Date20210216080825' => $baseDir . '/core/Migrations/Version22000Date20210216080825.php', | |||
'OC\\Core\\Notification\\CoreNotifier' => $baseDir . '/core/Notification/CoreNotifier.php', | |||
'OC\\Core\\Service\\LoginFlowV2Service' => $baseDir . '/core/Service/LoginFlowV2Service.php', | |||
@@ -1165,6 +1166,8 @@ return array( | |||
'OC\\IntegrityCheck\\Helpers\\FileAccessHelper' => $baseDir . '/lib/private/IntegrityCheck/Helpers/FileAccessHelper.php', | |||
'OC\\IntegrityCheck\\Iterator\\ExcludeFileByNameFilterIterator' => $baseDir . '/lib/private/IntegrityCheck/Iterator/ExcludeFileByNameFilterIterator.php', | |||
'OC\\IntegrityCheck\\Iterator\\ExcludeFoldersByPathFilterIterator' => $baseDir . '/lib/private/IntegrityCheck/Iterator/ExcludeFoldersByPathFilterIterator.php', | |||
'OC\\KnownUser\\KnownUser' => $baseDir . '/lib/private/KnownUser/KnownUser.php', | |||
'OC\\KnownUser\\KnownUserMapper' => $baseDir . '/lib/private/KnownUser/KnownUserMapper.php', | |||
'OC\\L10N\\Factory' => $baseDir . '/lib/private/L10N/Factory.php', | |||
'OC\\L10N\\L10N' => $baseDir . '/lib/private/L10N/L10N.php', | |||
'OC\\L10N\\L10NString' => $baseDir . '/lib/private/L10N/L10NString.php', |
@@ -977,6 +977,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c | |||
'OC\\Core\\Migrations\\Version21000Date20201120141228' => __DIR__ . '/../../..' . '/core/Migrations/Version21000Date20201120141228.php', | |||
'OC\\Core\\Migrations\\Version21000Date20201202095923' => __DIR__ . '/../../..' . '/core/Migrations/Version21000Date20201202095923.php', | |||
'OC\\Core\\Migrations\\Version21000Date20210119195004' => __DIR__ . '/../../..' . '/core/Migrations/Version21000Date20210119195004.php', | |||
'OC\\Core\\Migrations\\Version21000Date20210309185126' => __DIR__ . '/../../..' . '/core/Migrations/Version21000Date20210309185126.php', | |||
'OC\\Core\\Migrations\\Version22000Date20210216080825' => __DIR__ . '/../../..' . '/core/Migrations/Version22000Date20210216080825.php', | |||
'OC\\Core\\Notification\\CoreNotifier' => __DIR__ . '/../../..' . '/core/Notification/CoreNotifier.php', | |||
'OC\\Core\\Service\\LoginFlowV2Service' => __DIR__ . '/../../..' . '/core/Service/LoginFlowV2Service.php', | |||
@@ -1194,6 +1195,8 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c | |||
'OC\\IntegrityCheck\\Helpers\\FileAccessHelper' => __DIR__ . '/../../..' . '/lib/private/IntegrityCheck/Helpers/FileAccessHelper.php', | |||
'OC\\IntegrityCheck\\Iterator\\ExcludeFileByNameFilterIterator' => __DIR__ . '/../../..' . '/lib/private/IntegrityCheck/Iterator/ExcludeFileByNameFilterIterator.php', | |||
'OC\\IntegrityCheck\\Iterator\\ExcludeFoldersByPathFilterIterator' => __DIR__ . '/../../..' . '/lib/private/IntegrityCheck/Iterator/ExcludeFoldersByPathFilterIterator.php', | |||
'OC\\KnownUser\\KnownUser' => __DIR__ . '/../../..' . '/lib/private/KnownUser/KnownUser.php', | |||
'OC\\KnownUser\\KnownUserMapper' => __DIR__ . '/../../..' . '/lib/private/KnownUser/KnownUserMapper.php', | |||
'OC\\L10N\\Factory' => __DIR__ . '/../../..' . '/lib/private/L10N/Factory.php', | |||
'OC\\L10N\\L10N' => __DIR__ . '/../../..' . '/lib/private/L10N/L10N.php', | |||
'OC\\L10N\\L10NString' => __DIR__ . '/../../..' . '/lib/private/L10N/L10NString.php', |
@@ -0,0 +1,46 @@ | |||
<?php | |||
declare(strict_types=1); | |||
/** | |||
* @copyright Copyright (c) 2021 Joas Schilling <coding@schilljs.com> | |||
* | |||
* @license GNU AGPL version 3 or any later version | |||
* | |||
* This program is free software: you can redistribute it and/or modify | |||
* it under the terms of the GNU Affero General Public License as | |||
* published by the Free Software Foundation, either version 3 of the | |||
* License, or (at your option) any later version. | |||
* | |||
* 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 | |||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
* | |||
*/ | |||
namespace OC\KnownUser; | |||
use OCP\AppFramework\Db\Entity; | |||
/** | |||
* @method void setKnownTo(string $knownTo) | |||
* @method string getKnownTo() | |||
* @method void setKnownUser(string $knownUser) | |||
* @method string getKnownUser() | |||
*/ | |||
class KnownUser extends Entity { | |||
/** @var string */ | |||
protected $knownTo; | |||
/** @var string */ | |||
protected $knownUser; | |||
public function __construct() { | |||
$this->addType('knownTo', 'string'); | |||
$this->addType('knownUser', 'string'); | |||
} | |||
} |
@@ -0,0 +1,72 @@ | |||
<?php | |||
declare(strict_types=1); | |||
/** | |||
* @copyright Copyright (c) 2021 Joas Schilling <coding@schilljs.com> | |||
* | |||
* @license GNU AGPL version 3 or any later version | |||
* | |||
* This program is free software: you can redistribute it and/or modify | |||
* it under the terms of the GNU Affero General Public License as | |||
* published by the Free Software Foundation, either version 3 of the | |||
* License, or (at your option) any later version. | |||
* | |||
* 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 | |||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
* | |||
*/ | |||
namespace OC\KnownUser; | |||
use OCP\AppFramework\Db\QBMapper; | |||
use OCP\IDBConnection; | |||
/** | |||
* @method KnownUser mapRowToEntity(array $row) | |||
*/ | |||
class KnownUserMapper extends QBMapper { | |||
/** | |||
* @param IDBConnection $db | |||
*/ | |||
public function __construct(IDBConnection $db) { | |||
parent::__construct($db, 'known_users', KnownUser::class); | |||
} | |||
/** | |||
* @param string $knownTo | |||
* @return int Number of deleted entities | |||
*/ | |||
public function deleteKnownTo(string $knownTo): int { | |||
$query = $this->db->getQueryBuilder(); | |||
$query->delete($this->getTableName()) | |||
->where($query->expr()->eq('known_to', $query->createNamedParameter($knownTo))); | |||
return (int) $query->execute(); | |||
} | |||
/** | |||
* @param string $knownUser | |||
* @return int Number of deleted entities | |||
*/ | |||
public function deleteKnownUser(string $knownUser): int { | |||
$query = $this->db->getQueryBuilder(); | |||
$query->delete($this->getTableName()) | |||
->where($query->expr()->eq('known_user', $query->createNamedParameter($knownUser))); | |||
return (int) $query->execute(); | |||
} | |||
public function createKnownUserFromRow(array $row): KnownUser { | |||
return $this->mapRowToEntity([ | |||
'id' => $row['s_id'], | |||
'known_to' => $row['known_to'], | |||
'known_user' => $row['known_user'], | |||
]); | |||
} | |||
} |