* SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OC\Core\Command\Db; use Doctrine\DBAL\Schema\Schema; use OC\Core\Command\Base; use OC\DB\Connection; use OC\DB\MigrationService; use OC\DB\SchemaWrapper; use OC\Migration\NullOutput; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; class ExpectedSchema extends Base { public function __construct( protected Connection $connection, ) { parent::__construct(); } protected function configure(): void { $this ->setName('db:schema:expected') ->setDescription('Export the expected database schema for a fresh installation') ->setHelp("Note that the expected schema might not exactly match the exported live schema as the expected schema doesn't take into account any database wide settings or defaults.") ->addOption('sql', null, InputOption::VALUE_NONE, 'Dump the SQL statements for creating the expected schema'); parent::configure(); } protected function execute(InputInterface $input, OutputInterface $output): int { $schema = new Schema(); $this->applyMigrations('core', $schema); $apps = \OC_App::getEnabledApps(); foreach ($apps as $app) { $this->applyMigrations($app, $schema); } $sql = $input->getOption('sql'); if ($sql) { $output->writeln($schema->toSql($this->connection->getDatabasePlatform())); } else { $encoder = new SchemaEncoder(); $this->writeArrayInOutputFormat($input, $output, $encoder->encodeSchema($schema, $this->connection->getDatabasePlatform())); } return 0; } private function applyMigrations(string $app, Schema $schema): void { $output = new NullOutput(); $ms = new MigrationService($app, $this->connection, $output); foreach ($ms->getAvailableVersions() as $version) { $migration = $ms->createInstance($version); $migration->changeSchema($output, function () use (&$schema) { return new SchemaWrapper($this->connection, $schema); }, []); } } } > Nextcloud server, a safe home for all your data: https://github.com/nextcloud/serverwww-data
aboutsummaryrefslogtreecommitdiffstats
path: root/lib/appframework/middleware/security/securityexception.php
blob: b32a2769ff5c3975e2ee5545fccceaad8d61215b (plain)
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