From 0a04c76d6672aa26f01fffd6cc5e32ed7f9eb366 Mon Sep 17 00:00:00 2001 From: Boy132 Date: Tue, 28 Apr 2026 14:05:28 +0200 Subject: [PATCH] delete all (remote) backups when server is deleted --- .../Servers/ServerDeletionService.php | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/app/Services/Servers/ServerDeletionService.php b/app/Services/Servers/ServerDeletionService.php index 7f59d017c..c959d8cf4 100644 --- a/app/Services/Servers/ServerDeletionService.php +++ b/app/Services/Servers/ServerDeletionService.php @@ -3,6 +3,8 @@ namespace App\Services\Servers; use App\Exceptions\DisplayException; +use App\Extensions\BackupAdapter\BackupAdapterService; +use App\Extensions\BackupAdapter\Schemas\WingsBackupSchema; use App\Models\Server; use App\Repositories\Daemon\DaemonServerRepository; use App\Services\Databases\DatabaseManagementService; @@ -22,7 +24,8 @@ class ServerDeletionService public function __construct( private ConnectionInterface $connection, private DaemonServerRepository $daemonServerRepository, - private DatabaseManagementService $databaseManagementService + private DatabaseManagementService $databaseManagementService, + private BackupAdapterService $backupService ) {} /** @@ -78,6 +81,26 @@ class ServerDeletionService } } + foreach ($server->backups as $backup) { + try { + $schema = $this->backupService->get($backup->backupHost->schema); + + if ($schema) { + if ($schema instanceof WingsBackupSchema) { + // Local wings backups are already deleted by the daemon + } else { + $schema->deleteBackup($backup); + } + } + } catch (Exception $exception) { + if (!$this->force) { + throw $exception; + } + + logger()->warning($exception); + } + } + $server->allocations()->update([ 'server_id' => null, 'notes' => null,