-
app/Console/Commands/Demo/ResetDemo.php
Open in GitHubuse Illuminate\Console\Command; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Artisan; use Illuminate\Console\ConfirmableTrait; class ResetDemo extends Command { use ConfirmableTrait; protected $signature = 'demo:reset {--force : Force the operation to run when in production.}'; protected $description = 'Reset the demo env'; public function handle(): void { if (! config('officelife.demo_mode')) { $this->line('This command is only available in demo mode.'); return; } if ($this->confirmToProceed()) { try { Artisan::call('down'); if (Cache::has('databasereset')) { $sql = Cache::get('databasereset'); } else { $this->line('Downloading file...'); $file = Http::get('https://github.com/officelifehq/demosql/raw/main/officelife.sql'); $file->throw(); $sql = $file->body(); Cache::put('databasereset', $sql, 7200); } $this->line('Running transaction...'); DB::unprepared($sql); $this->line('Running migration...'); Artisan::call('migrate', ['--force' => true, '--verbose' => true]); } finally { Artisan::call('up'); } $this->line('Database cleaned.'); } } }