From 7bbbba37f596c9d17b914f377ff9e9215bd7f20c Mon Sep 17 00:00:00 2001 From: notCharles Date: Tue, 23 Apr 2024 20:03:57 -0400 Subject: [PATCH] Add force delete for servers --- app/Filament/Resources/ServerResource/Pages/EditServer.php | 6 ++++++ app/Services/Servers/ServerDeletionService.php | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/app/Filament/Resources/ServerResource/Pages/EditServer.php b/app/Filament/Resources/ServerResource/Pages/EditServer.php index d3a347c32..5b5d3726f 100644 --- a/app/Filament/Resources/ServerResource/Pages/EditServer.php +++ b/app/Filament/Resources/ServerResource/Pages/EditServer.php @@ -590,11 +590,17 @@ class EditServer extends EditRecord protected function getHeaderActions(): array { return [ + Actions\Action::make('Force Delete') + ->successRedirectUrl($this->getResource()::getUrl('index')) + ->color('danger') + ->action(fn (Server $server) => resolve(ServerDeletionService::class)->withForce()->handle($server)) + ->requiresConfirmation(), Actions\Action::make('Delete') ->successRedirectUrl($this->getResource()::getUrl('index')) ->color('danger') ->action(fn (Server $server) => resolve(ServerDeletionService::class)->handle($server)) ->requiresConfirmation(), + ]; } } diff --git a/app/Services/Servers/ServerDeletionService.php b/app/Services/Servers/ServerDeletionService.php index b19e30808..85e362ed1 100644 --- a/app/Services/Servers/ServerDeletionService.php +++ b/app/Services/Servers/ServerDeletionService.php @@ -2,6 +2,7 @@ namespace App\Services\Servers; +use Exception; use Illuminate\Http\Response; use App\Models\Server; use Illuminate\Database\ConnectionInterface; @@ -43,7 +44,7 @@ class ServerDeletionService { try { $this->daemonServerRepository->setServer($server)->delete(); - } catch (DaemonConnectionException $exception) { + } catch (Exception $exception) { // If there is an error not caused a 404 error and this isn't a forced delete, // go ahead and bail out. We specifically ignore a 404 since that can be assumed // to be a safe error, meaning the server doesn't exist at all on daemon so there