mirror of
https://github.com/vitodeploy/vito.git
synced 2025-07-01 05:56:16 +00:00
database backups
This commit is contained in:
@ -2,14 +2,24 @@
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\Backup;
|
||||
use App\Models\Server;
|
||||
use Illuminate\Contracts\View\View;
|
||||
|
||||
class DatabaseController extends Controller
|
||||
{
|
||||
public function index(Server $server)
|
||||
public function index(Server $server): View
|
||||
{
|
||||
return view('databases.index', [
|
||||
'server' => $server,
|
||||
]);
|
||||
}
|
||||
|
||||
public function backups(Server $server, Backup $backup): View
|
||||
{
|
||||
return view('databases.backups', [
|
||||
'server' => $server,
|
||||
'backup' => $backup,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
67
app/Http/Livewire/Databases/DatabaseBackupFiles.php
Normal file
67
app/Http/Livewire/Databases/DatabaseBackupFiles.php
Normal file
@ -0,0 +1,67 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\Databases;
|
||||
|
||||
use App\Models\Backup;
|
||||
use App\Models\BackupFile;
|
||||
use App\Models\Database;
|
||||
use App\Models\Server;
|
||||
use App\Traits\HasCustomPaginationView;
|
||||
use App\Traits\RefreshComponentOnBroadcast;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class DatabaseBackupFiles extends Component
|
||||
{
|
||||
use HasCustomPaginationView;
|
||||
use RefreshComponentOnBroadcast;
|
||||
|
||||
public Server $server;
|
||||
|
||||
public Backup $backup;
|
||||
|
||||
public string $restoreId = "";
|
||||
|
||||
public string $restoreDatabaseId = "";
|
||||
|
||||
public int $deleteId;
|
||||
|
||||
public function backup(): void
|
||||
{
|
||||
$this->backup->run();
|
||||
|
||||
$this->refreshComponent([]);
|
||||
}
|
||||
|
||||
public function restore(): void
|
||||
{
|
||||
/** @var BackupFile $file */
|
||||
$file = BackupFile::query()->findOrFail($this->restoreId);
|
||||
|
||||
/** @var Database $database */
|
||||
$database = Database::query()->findOrFail($this->restoreDatabaseId);
|
||||
|
||||
$file->restore($database);
|
||||
|
||||
$this->refreshComponent([]);
|
||||
|
||||
$this->dispatchBrowserEvent('restored', true);
|
||||
}
|
||||
|
||||
public function delete(): void
|
||||
{
|
||||
/** @var BackupFile $file */
|
||||
$file = BackupFile::query()->findOrFail($this->deleteId);
|
||||
|
||||
$file->delete();
|
||||
|
||||
$this->dispatchBrowserEvent('confirmed', true);
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.databases.database-backup-files', [
|
||||
'files' => $this->backup->files()->orderByDesc('id')->simplePaginate(10)
|
||||
]);
|
||||
}
|
||||
}
|
81
app/Http/Livewire/Databases/DatabaseBackups.php
Normal file
81
app/Http/Livewire/Databases/DatabaseBackups.php
Normal file
@ -0,0 +1,81 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\Databases;
|
||||
|
||||
use App\Actions\Database\CreateBackup;
|
||||
use App\Models\Backup;
|
||||
use App\Models\Server;
|
||||
use App\Traits\RefreshComponentOnBroadcast;
|
||||
use Illuminate\Contracts\Pagination\Paginator;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
use Livewire\WithPagination;
|
||||
|
||||
class DatabaseBackups extends Component
|
||||
{
|
||||
use RefreshComponentOnBroadcast;
|
||||
use WithPagination;
|
||||
|
||||
public Server $server;
|
||||
|
||||
public int $deleteId;
|
||||
|
||||
public string $database = '';
|
||||
|
||||
public string $storage = '';
|
||||
|
||||
public string $interval = '';
|
||||
|
||||
public string $custom = '';
|
||||
|
||||
public int $keep = 10;
|
||||
|
||||
public ?Backup $backup = null;
|
||||
|
||||
protected ?Paginator $files = null;
|
||||
|
||||
public function create(): void
|
||||
{
|
||||
app(CreateBackup::class)->create('database', $this->server, $this->all());
|
||||
|
||||
$this->refreshComponent([]);
|
||||
|
||||
$this->dispatchBrowserEvent('backup-created', true);
|
||||
}
|
||||
|
||||
public function files(int $id): void
|
||||
{
|
||||
$backup = Backup::query()->findOrFail($id);
|
||||
$this->backup = $backup;
|
||||
$this->files = $backup->files()->orderByDesc('id')->simplePaginate(1);
|
||||
$this->dispatchBrowserEvent('show-files', true);
|
||||
}
|
||||
|
||||
public function backup(): void
|
||||
{
|
||||
$this->backup?->run();
|
||||
|
||||
$this->files = $this->backup?->files()->orderByDesc('id')->simplePaginate();
|
||||
|
||||
$this->dispatchBrowserEvent('backup-running', true);
|
||||
}
|
||||
|
||||
public function delete(): void
|
||||
{
|
||||
/** @var Backup $backup */
|
||||
$backup = Backup::query()->findOrFail($this->deleteId);
|
||||
|
||||
$backup->delete();
|
||||
|
||||
$this->dispatchBrowserEvent('confirmed', true);
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.databases.database-backups', [
|
||||
'backups' => $this->server->backups,
|
||||
'databases' => $this->server->databases,
|
||||
'files' => $this->files
|
||||
]);
|
||||
}
|
||||
}
|
30
app/Http/Livewire/StorageProviders/ConnectProvider.php
Normal file
30
app/Http/Livewire/StorageProviders/ConnectProvider.php
Normal file
@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\StorageProviders;
|
||||
|
||||
use App\Actions\StorageProvider\CreateStorageProvider;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class ConnectProvider extends Component
|
||||
{
|
||||
public string $provider = '';
|
||||
|
||||
public string $name;
|
||||
|
||||
public string $token;
|
||||
|
||||
public function connect(): void
|
||||
{
|
||||
app(CreateStorageProvider::class)->create(auth()->user(), $this->all());
|
||||
|
||||
$this->emitTo(ProvidersList::class, '$refresh');
|
||||
|
||||
$this->dispatchBrowserEvent('connected', true);
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.storage-providers.connect-provider');
|
||||
}
|
||||
}
|
37
app/Http/Livewire/StorageProviders/ProvidersList.php
Normal file
37
app/Http/Livewire/StorageProviders/ProvidersList.php
Normal file
@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\StorageProviders;
|
||||
|
||||
use App\Models\StorageProvider;
|
||||
use App\Traits\RefreshComponentOnBroadcast;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class ProvidersList extends Component
|
||||
{
|
||||
use RefreshComponentOnBroadcast;
|
||||
|
||||
public int $deleteId;
|
||||
|
||||
protected $listeners = [
|
||||
'$refresh',
|
||||
];
|
||||
|
||||
public function delete(): void
|
||||
{
|
||||
$provider = StorageProvider::query()->findOrFail($this->deleteId);
|
||||
|
||||
$provider->delete();
|
||||
|
||||
$this->refreshComponent([]);
|
||||
|
||||
$this->dispatchBrowserEvent('confirmed', true);
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.storage-providers.providers-list', [
|
||||
'providers' => StorageProvider::query()->latest()->get(),
|
||||
]);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user