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,