2023-08-11 18:48:52 +00:00
|
|
|
<?php
|
|
|
|
|
|
2023-12-07 18:06:32 +00:00
|
|
|
namespace App\Livewire\Project\Database;
|
2023-08-11 18:48:52 +00:00
|
|
|
|
|
|
|
|
use App\Jobs\DatabaseBackupJob;
|
2025-08-23 16:50:35 +00:00
|
|
|
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
|
2023-08-11 18:48:52 +00:00
|
|
|
use Livewire\Component;
|
|
|
|
|
|
|
|
|
|
class BackupNow extends Component
|
|
|
|
|
{
|
2025-08-23 16:50:35 +00:00
|
|
|
use AuthorizesRequests;
|
|
|
|
|
|
2023-08-11 18:48:52 +00:00
|
|
|
public $backup;
|
2024-06-10 20:43:34 +00:00
|
|
|
|
2024-12-16 09:38:18 +00:00
|
|
|
public function backupNow()
|
2023-08-11 18:48:52 +00:00
|
|
|
{
|
2026-02-25 13:20:29 +00:00
|
|
|
try {
|
|
|
|
|
$this->authorize('manageBackups', $this->backup->database);
|
2025-08-23 16:50:35 +00:00
|
|
|
|
2026-09-07 14:46:37 +00:00
|
|
|
$database = $this->backup->database->refresh();
|
|
|
|
|
if ($database->id !== 0 && ! str($database->status)->startsWith('running')) {
|
|
|
|
|
$this->dispatch('error', 'The database must be running to start a backup.');
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
2026-02-25 13:20:29 +00:00
|
|
|
DatabaseBackupJob::dispatch($this->backup);
|
|
|
|
|
$this->dispatch('success', 'Backup queued. It will be available in a few minutes.');
|
|
|
|
|
} catch (\Throwable $e) {
|
|
|
|
|
return handleError($e, $this);
|
|
|
|
|
}
|
2023-08-11 18:48:52 +00:00
|
|
|
}
|
|
|
|
|
}
|