mirror of
https://github.com/flarum/core.git
synced 2025-10-23 12:46:09 +02:00
Revert "Revert "Squash core migrations (#2842)""
This reverts commit 16f3ae9d1e
.
This commit is contained in:
87
src/Database/Console/GenerateDumpCommand.php
Normal file
87
src/Database/Console/GenerateDumpCommand.php
Normal file
@@ -0,0 +1,87 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Flarum.
|
||||
*
|
||||
* For detailed copyright and license information, please view the
|
||||
* LICENSE file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Flarum\Database\Console;
|
||||
|
||||
use Flarum\Console\AbstractCommand;
|
||||
use Flarum\Foundation\Paths;
|
||||
use Illuminate\Database\Connection;
|
||||
|
||||
class GenerateDumpCommand extends AbstractCommand
|
||||
{
|
||||
/**
|
||||
* @var Connection
|
||||
*/
|
||||
protected $connection;
|
||||
|
||||
/**
|
||||
* @var Paths
|
||||
*/
|
||||
protected $paths;
|
||||
|
||||
/**
|
||||
* @param Connection $connection
|
||||
* @param Paths $paths
|
||||
*/
|
||||
public function __construct(Connection $connection, Paths $paths)
|
||||
{
|
||||
$this->connection = $connection;
|
||||
$this->paths = $paths;
|
||||
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function configure()
|
||||
{
|
||||
$this
|
||||
->setName('schema:dump')
|
||||
->setDescription('Dump DB schema');
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function fire()
|
||||
{
|
||||
$dumpPath = __DIR__.'/../../../migrations/install.dump';
|
||||
/** @var Connection */
|
||||
$connection = resolve('db.connection');
|
||||
|
||||
$connection
|
||||
->getSchemaState()
|
||||
->withMigrationTable($connection->getTablePrefix().'migrations')
|
||||
->handleOutputUsing(function ($type, $buffer) {
|
||||
$this->output->write($buffer);
|
||||
})
|
||||
->dump($connection, $dumpPath);
|
||||
|
||||
// We need to remove any data migrations, as those won't be captured
|
||||
// in the schema dump, and must be run separately.
|
||||
$coreDataMigrations = [
|
||||
'2018_07_21_000000_seed_default_groups',
|
||||
'2018_07_21_000100_seed_default_group_permissions',
|
||||
];
|
||||
|
||||
$newDump = [];
|
||||
$dump = file($dumpPath);
|
||||
foreach ($dump as $line) {
|
||||
foreach ($coreDataMigrations as $excludeMigrationId) {
|
||||
if (strpos($line, $excludeMigrationId) !== false) {
|
||||
continue 2;
|
||||
}
|
||||
}
|
||||
$newDump[] = $line;
|
||||
}
|
||||
|
||||
file_put_contents($dumpPath, implode($newDump));
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user