<?php namespace App\Actions\Database; use App\Enums\BackupFileStatus; use App\Models\BackupFile; use Illuminate\Support\Facades\Storage; use Symfony\Component\HttpFoundation\StreamedResponse; use Throwable; class ManageBackupFile { /** * @throws Throwable */ public function download(BackupFile $file): StreamedResponse { $file->backup->server->ssh()->download( Storage::disk('tmp')->path(basename($file->path())), $file->path() ); return Storage::disk('tmp')->download(basename($file->path())); } public function delete(BackupFile $file): void { $file->status = BackupFileStatus::DELETING; $file->save(); dispatch(function () use ($file): void { $file->deleteFile(); }); } }