fix: scheduled backup for services view

This commit is contained in:
Andras Bacsai
2024-10-03 22:38:37 +02:00
parent 8c024ddb57
commit 81b8a58415
2 changed files with 35 additions and 31 deletions

View File

@@ -26,7 +26,7 @@ class ScheduledBackups extends Component
public function mount(): void public function mount(): void
{ {
if ($this->selectedBackupId) { if ($this->selectedBackupId) {
$this->setSelectedBackup($this->selectedBackupId); $this->setSelectedBackup($this->selectedBackupId, true);
} }
$this->parameters = get_route_parameters(); $this->parameters = get_route_parameters();
if ($this->database->getMorphClass() === 'App\Models\ServiceDatabase') { if ($this->database->getMorphClass() === 'App\Models\ServiceDatabase') {
@@ -37,10 +37,13 @@ class ScheduledBackups extends Component
$this->s3s = currentTeam()->s3s; $this->s3s = currentTeam()->s3s;
} }
public function setSelectedBackup($backupId) public function setSelectedBackup($backupId, $force = false)
{ {
if ($this->selectedBackupId === $backupId && ! $force) {
return;
}
$this->selectedBackupId = $backupId; $this->selectedBackupId = $backupId;
$this->selectedBackup = $this->database->scheduledBackups->find($this->selectedBackupId); $this->selectedBackup = $this->database->scheduledBackups->find($backupId);
if (is_null($this->selectedBackup)) { if (is_null($this->selectedBackup)) {
$this->selectedBackupId = null; $this->selectedBackupId = null;
} }

View File

@@ -1,37 +1,38 @@
<div> <div>
<div class="flex flex-col gap-2"> <div class="flex flex-col gap-2">
@forelse($database->scheduledBackups as $backup) @forelse($database->scheduledBackups as $backup)
@if ($type == 'database') @if ($type == 'database')
<a class="box" <a class="box"
href="{{ route('project.database.backup.execution', [...$parameters, 'backup_uuid' => $backup->uuid]) }}"> href="{{ route('project.database.backup.execution', [...$parameters, 'backup_uuid' => $backup->uuid]) }}">
<div class="flex flex-col"> <div class="flex flex-col">
<div>Frequency: {{ $backup->frequency }}</div> <div>Frequency: {{ $backup->frequency }}</div>
<div>Last backup: {{ data_get($backup->latest_log, 'status', 'No backup yet') }}</div> <div>Last backup: {{ data_get($backup->latest_log, 'status', 'No backup yet') }}</div>
<div>Number of backups to keep (locally): {{ $backup->number_of_backups_locally }}</div> <div>Number of backups to keep (locally): {{ $backup->number_of_backups_locally }}</div>
</div> </div>
</a> </a>
@else @else
<div class="box" wire:click="setSelectedBackup('{{ data_get($backup, 'id') }}')"> <div class="box" wire:click="setSelectedBackup('{{ data_get($backup, 'id') }}')">
<div @class([ 'border-coollabs'=> <div @class([
data_get($backup, 'id') === data_get($selectedBackup, 'id'), 'border-coollabs' =>
'flex flex-col border-l-2 border-transparent', data_get($backup, 'id') === data_get($selectedBackup, 'id'),
])> 'flex flex-col border-l-2 border-transparent',
<div>Frequency: {{ $backup->frequency }}</div> ])>
<div>Last backup: {{ data_get($backup->latest_log, 'status', 'No backup yet') }}</div> <div>Frequency: {{ $backup->frequency }}</div>
<div>Number of backups to keep (locally): {{ $backup->number_of_backups_locally }}</div> <div>Last backup: {{ data_get($backup->latest_log, 'status', 'No backup yet') }}</div>
</div> <div>Number of backups to keep (locally): {{ $backup->number_of_backups_locally }}</div>
</div> </div>
@endif </div>
@endif
@empty @empty
<div>No scheduled backups configured.</div> <div>No scheduled backups configured.</div>
@endforelse @endforelse
</div> </div>
@if ($type === 'service-database' && $selectedBackup) @if ($type === 'service-database' && $selectedBackup)
<div class="pt-10"> <div class="pt-10">
<livewire:project.database.backup-edit wire:key="{{ $selectedBackup->id }}" :backup="$selectedBackup" <livewire:project.database.backup-edit wire:key="{{ $selectedBackup->id }}" :backup="$selectedBackup"
:s3s="$s3s" :status="data_get($database, 'status')" /> :s3s="$s3s" :status="data_get($database, 'status')" />
<h3 class="py-4">Executions</h3> <livewire:project.database.backup-executions wire:key="{{ $selectedBackup->uuid }}" :backup="$selectedBackup"
<livewire:project.database.backup-executions wire:key="{{ $selectedBackup->id }}" :backup="$selectedBackup" :database="$database" /> :database="$database" />
</div> </div>
@endif @endif
</div> </div>