diff --git a/app/Livewire/Project/Database/CreateScheduledBackup.php b/app/Livewire/Project/Database/CreateScheduledBackup.php
index 52bced44f..d26348f5f 100644
--- a/app/Livewire/Project/Database/CreateScheduledBackup.php
+++ b/app/Livewire/Project/Database/CreateScheduledBackup.php
@@ -4,44 +4,45 @@ namespace App\Livewire\Project\Database;
use App\Models\ScheduledDatabaseBackup;
use Illuminate\Support\Collection;
+use Livewire\Attributes\Locked;
+use Livewire\Attributes\Rule;
use Livewire\Component;
class CreateScheduledBackup extends Component
{
- public $database;
-
+ #[Rule(['required', 'string'])]
public $frequency;
+ #[Rule(['required', 'boolean'])]
+ public bool $saveToS3 = false;
+
+ #[Locked]
+ public $database;
+
public bool $enabled = true;
- public bool $save_s3 = false;
+ #[Rule(['required', 'integer'])]
+ public int $s3StorageId;
- public $s3_storage_id;
-
- public Collection $s3s;
-
- protected $rules = [
- 'frequency' => 'required|string',
- 'save_s3' => 'required|boolean',
- ];
-
- protected $validationAttributes = [
- 'frequency' => 'Backup Frequency',
- 'save_s3' => 'Save to S3',
- ];
+ public Collection $definedS3s;
public function mount()
{
- $this->s3s = currentTeam()->s3s;
- if ($this->s3s->count() > 0) {
- $this->s3_storage_id = $this->s3s->first()->id;
+ try {
+ $this->definedS3s = currentTeam()->s3s;
+ if ($this->definedS3s->count() > 0) {
+ $this->s3StorageId = $this->definedS3s->first()->id;
+ }
+ } catch (\Throwable $e) {
+ return handleError($e, $this);
}
}
- public function submit(): void
+ public function submit()
{
try {
$this->validate();
+
$isValid = validate_cron_expression($this->frequency);
if (! $isValid) {
$this->dispatch('error', 'Invalid Cron / Human expression.');
@@ -51,8 +52,8 @@ class CreateScheduledBackup extends Component
$payload = [
'enabled' => true,
'frequency' => $this->frequency,
- 'save_s3' => $this->save_s3,
- 's3_storage_id' => $this->s3_storage_id,
+ 'save_s3' => $this->saveToS3,
+ 's3_storage_id' => $this->s3StorageId,
'database_id' => $this->database->id,
'database_type' => $this->database->getMorphClass(),
'team_id' => currentTeam()->id,
@@ -72,10 +73,10 @@ class CreateScheduledBackup extends Component
$this->dispatch('refreshScheduledBackups');
}
} catch (\Throwable $e) {
- handleError($e, $this);
+ return handleError($e, $this);
} finally {
$this->frequency = '';
- $this->save_s3 = true;
+ $this->saveToS3 = true;
}
}
}
diff --git a/resources/views/livewire/project/database/create-scheduled-backup.blade.php b/resources/views/livewire/project/database/create-scheduled-backup.blade.php
index 492bb9f27..ee2f3e121 100644
--- a/resources/views/livewire/project/database/create-scheduled-backup.blade.php
+++ b/resources/views/livewire/project/database/create-scheduled-backup.blade.php
@@ -2,13 +2,13 @@