diff --git a/app/Http/Controllers/V1/Admin/Backup/BackupsController.php b/app/Http/Controllers/V1/Admin/Backup/BackupsController.php index 3a8daa94..5ac80f82 100644 --- a/app/Http/Controllers/V1/Admin/Backup/BackupsController.php +++ b/app/Http/Controllers/V1/Admin/Backup/BackupsController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers\V1\Admin\Backup; use App\Jobs\CreateBackupJob; +use App\Models\FileDisk; use App\Rules\Backup\PathToZip; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; @@ -27,6 +28,16 @@ class BackupsController extends ApiController $configuredBackupDisks = config('backup.backup.destination.disks'); try { + if ($request->file_disk_id) { + $fileDisk = FileDisk::find($request->file_disk_id); + if ($fileDisk) { + $fileDisk->setConfig(); + $prefix = env('DYNAMIC_DISK_PREFIX', 'temp_'); + config(['backup.backup.destination.disks' => [$prefix.$fileDisk->driver]]); + $configuredBackupDisks = config('backup.backup.destination.disks'); + } + } + $backupDestination = BackupDestination::create(config('filesystems.default'), config('backup.backup.name')); $backups = Cache::remember("backups-{$request->file_disk_id}", now()->addSeconds(4), function () use ($backupDestination) { diff --git a/resources/scripts/admin/views/settings/BackupSetting.vue b/resources/scripts/admin/views/settings/BackupSetting.vue index 9852c979..9cc3d56f 100644 --- a/resources/scripts/admin/views/settings/BackupSetting.vue +++ b/resources/scripts/admin/views/settings/BackupSetting.vue @@ -167,14 +167,14 @@ async function loadDisksData() { let res = await diskStore.fetchDisks({ limit: 'all' }) if (res.data.error) { } - filters.selected_disk = res.data.data.find((disk) => disk.set_as_default == 0) + filters.selected_disk = res.data.data.find((disk) => disk.set_as_default == 1) ?? res.data.data[0] isFetchingInitialData.value = false } async function fetchBackupsData({ page, filter, sort }) { let data = { disk: filters.selected_disk.driver, - filed_disk_id: filters.selected_disk.id, + file_disk_id: filters.selected_disk.id, } isFetchingInitialData.value = true diff --git a/tests/Feature/Admin/BackupTest.php b/tests/Feature/Admin/BackupTest.php index fcfd4b80..aa5308a6 100644 --- a/tests/Feature/Admin/BackupTest.php +++ b/tests/Feature/Admin/BackupTest.php @@ -50,9 +50,11 @@ test('create backup', function () { $response = getJson("/api/v1/backups?disk={$disk->driver}&&file_disk_id={$disk->id}"); + $prefix = env('DYNAMIC_DISK_PREFIX', 'temp_'); + $response->assertStatus(200)->assertJson([ 'disks' => [ - 'local', + $prefix.$disk->driver, ], ]); });