. * * @package LibreNMS * @link http://librenms.org * @copyright 2020 Tony Murray * @author Tony Murray */ namespace App\Http\Controllers\Install; use App\Http\Controllers\Controller; use App\StreamedOutput; use Illuminate\Http\Request; use Symfony\Component\HttpFoundation\StreamedResponse; class DatabaseMigrationController extends Controller { use UsesDatabase; public function __invoke() { return view('install.migrate-database'); } public function migrate(Request $request) { $this->configureDatabase(); $response = new StreamedResponse(function () use ($request) { try { $output = new StreamedOutput(fopen('php://stdout', 'w')); echo "Starting Update...\n"; $ret = \Artisan::call('migrate', ['--seed' => true, '--force' => true, '--database' => $this->connection], $output); if ($ret !== 0) { throw new \RuntimeException('Migration failed'); } echo "\n\nSuccess!"; session(['install.migrate' => true]); session()->save(); } catch (\Exception $e) { echo $e->getMessage() . "\n\nError!"; } }); $response->headers->set('Content-Type', 'text/plain'); $response->headers->set('X-Accel-Buffering', 'no'); return $response; } public static function enabled() { return session('install.database'); } public static function icon(): string { return 'fa-refresh'; } }