Skip to content

Commit

Permalink
Fix undefind SIGINT by using artican to call spatie backup. (#55)
Browse files Browse the repository at this point in the history
  • Loading branch information
lloricode committed Oct 30, 2023
1 parent 7d5856f commit e4741bb
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 25 deletions.
10 changes: 10 additions & 0 deletions src/Enums/Option.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?php

namespace ShuvroRoy\FilamentSpatieLaravelBackup\Enums;

enum Option: string
{
case ONLY_DB = 'only-db';
case ONLY_FILES = 'only-files';
case ALL = '';
}
39 changes: 15 additions & 24 deletions src/Jobs/CreateBackupJob.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,39 +6,30 @@
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Spatie\Backup\Tasks\Backup\BackupJobFactory;
use Illuminate\Support\Facades\Artisan;
use ShuvroRoy\FilamentSpatieLaravelBackup\Enums\Option;
use Spatie\Backup\Commands\BackupCommand;

class CreateBackupJob implements ShouldQueue
{
use Dispatchable;
use InteractsWithQueue;
use Queueable;

protected string $option;

public function __construct(string $option = '')
{
$this->option = $option;
}
public function __construct(
protected readonly Option $option = Option::ALL
){}

public function handle(): void
{
$backupJob = BackupJobFactory::createFromArray(config('backup'));

if ($this->option === 'only-db') {
$backupJob->dontBackupFilesystem();
}

if ($this->option === 'only-files') {
$backupJob->dontBackupDatabases();
}

if (! empty($this->option)) {
$prefix = str_replace('_', '-', $this->option) . '-';

$backupJob->setFilename($prefix . date('Y-m-d-H-i-s') . '.zip');
}

$backupJob->run();
Artisan::call(BackupCommand::class, [
'--only-db' => $this->option === Option::ONLY_DB,
'--only-files' => $this->option === Option::ONLY_FILES,
'--filename' => match ($this->option) {
Option::ALL => null,
default => str_replace('_', '-', $this->option->value).
'-'.date('Y-m-d-H-i-s').'.zip'
},
]);
}
}
3 changes: 2 additions & 1 deletion src/Pages/Backups.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
use Filament\Notifications\Notification;
use Filament\Pages\Page;
use Illuminate\Contracts\Support\Htmlable;
use ShuvroRoy\FilamentSpatieLaravelBackup\Enums\Option;
use ShuvroRoy\FilamentSpatieLaravelBackup\FilamentSpatieLaravelBackupPlugin;
use ShuvroRoy\FilamentSpatieLaravelBackup\Jobs\CreateBackupJob;

Expand Down Expand Up @@ -50,7 +51,7 @@ public function create(string $option = ''): void
/** @var FilamentSpatieLaravelBackupPlugin $plugin */
$plugin = filament()->getPlugin('filament-spatie-backup');

dispatch(new CreateBackupJob($option))
CreateBackupJob::dispatch(Option::from($option))
->onQueue($plugin->getQueue())
->afterResponse();

Expand Down

0 comments on commit e4741bb

Please sign in to comment.