-
Notifications
You must be signed in to change notification settings - Fork 88
Expand file tree
/
Copy pathCleanMigrations.php
More file actions
52 lines (44 loc) · 1.74 KB
/
Copy pathCleanMigrations.php
File metadata and controls
52 lines (44 loc) · 1.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2021 Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\Polls\Command\Db;
use Doctrine\DBAL\Schema\Schema;
use OCA\Polls\Command\Command;
use OCA\Polls\Db\V5\TableManager;
use OCP\IDBConnection;
/**
* @psalm-api
*/
class CleanMigrations extends Command {
protected string $name = parent::NAME_PREFIX . 'db:clean-migrations';
protected string $description = 'Remove old migrations entries from Nextcloud\'s migration table';
protected array $operationHints = [
'This command will remove all entries from the Nextcloud migration table that are related to the Polls app.',
'*****************************',
'** Please understand **',
'*****************************',
'Although old migrations entries are not used anymore, they can still remain in the installation, based on the way polls got installed.',
'This could result in executing invalid migrations in the future, which then could result in a unpredictable database state.',
'Therefore this command is highly NOT RECOMMENDED and should only be executed if you know what you are doing.',
'',
'Note: NO data migration will be executed, so make sure you have a backup of your database.',
];
public function __construct(
private TableManager $tableManager,
private IDBConnection $connection,
private Schema $schema,
) {
parent::__construct();
}
protected function runCommands(): int {
$this->schema = $this->connection->createSchema();
$this->tableManager->setSchema($this->schema);
$this->tableManager->removeObsoleteMigrations();
$this->printComment('Remove migration entries from migration table');
$this->connection->migrateToSchema($this->schema);
return 0;
}
}