fix error handling
This commit is contained in:
parent
80e915c015
commit
631b61e11c
@ -15,6 +15,7 @@ class Add extends Component
|
||||
public string $value;
|
||||
public bool $is_build_time = false;
|
||||
|
||||
protected $listeners = ['clearAddEnv' => 'clear'];
|
||||
protected $rules = [
|
||||
'key' => 'required|string',
|
||||
'value' => 'required|string',
|
||||
@ -27,25 +28,16 @@ class Add extends Component
|
||||
public function submit()
|
||||
{
|
||||
$this->validate();
|
||||
try {
|
||||
$application_id = Application::where('uuid', $this->parameters['application_uuid'])->firstOrFail()->id;
|
||||
EnvironmentVariable::create([
|
||||
'key' => $this->key,
|
||||
'value' => $this->value,
|
||||
'is_build_time' => $this->is_build_time,
|
||||
'application_id' => $application_id,
|
||||
]);
|
||||
$this->emit('refreshEnvs');
|
||||
$this->key = '';
|
||||
$this->value = '';
|
||||
} catch (mixed $e) {
|
||||
dd('asdf');
|
||||
if ($e instanceof QueryException) {
|
||||
dd($e->errorInfo);
|
||||
$this->emit('error', $e->errorInfo[2]);
|
||||
} else {
|
||||
$this->emit('error', $e);
|
||||
}
|
||||
}
|
||||
$this->emitUp('submit', [
|
||||
'key' => $this->key,
|
||||
'value' => $this->value,
|
||||
'is_build_time' => $this->is_build_time,
|
||||
]);
|
||||
}
|
||||
public function clear()
|
||||
{
|
||||
$this->key = '';
|
||||
$this->value = '';
|
||||
$this->is_build_time = false;
|
||||
}
|
||||
}
|
||||
|
@ -3,14 +3,30 @@
|
||||
namespace App\Http\Livewire\Project\Application\EnvironmentVariable;
|
||||
|
||||
use App\Models\Application;
|
||||
use App\Models\EnvironmentVariable;
|
||||
use Livewire\Component;
|
||||
|
||||
class All extends Component
|
||||
{
|
||||
public Application $application;
|
||||
protected $listeners = ['refreshEnvs'];
|
||||
protected $listeners = ['refreshEnvs', 'submit'];
|
||||
public function refreshEnvs()
|
||||
{
|
||||
$this->application->refresh();
|
||||
}
|
||||
public function submit($data)
|
||||
{
|
||||
try {
|
||||
EnvironmentVariable::create([
|
||||
'key' => $data['key'],
|
||||
'value' => $data['value'],
|
||||
'is_build_time' => $data['is_build_time'],
|
||||
'application_id' => $this->application->id,
|
||||
]);
|
||||
$this->application->refresh();
|
||||
$this->emit('clearAddEnv');
|
||||
} catch (\Exception $e) {
|
||||
return generalErrorHandlerLivewire($e, $this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -14,6 +14,8 @@ class Add extends Component
|
||||
public string $name;
|
||||
public string $mount_path;
|
||||
public string|null $host_path = null;
|
||||
|
||||
protected $listeners = ['clearAddStorage' => 'clear'];
|
||||
protected $rules = [
|
||||
'name' => 'required|string',
|
||||
'mount_path' => 'required|string',
|
||||
@ -26,27 +28,16 @@ class Add extends Component
|
||||
public function submit()
|
||||
{
|
||||
$this->validate();
|
||||
try {
|
||||
$application_id = Application::where('uuid', $this->parameters['application_uuid'])->firstOrFail()->id;
|
||||
LocalPersistentVolume::create([
|
||||
'name' => $this->name,
|
||||
'mount_path' => $this->mount_path,
|
||||
'host_path' => $this->host_path,
|
||||
'resource_id' => $application_id,
|
||||
'resource_type' => Application::class,
|
||||
]);
|
||||
$this->emit('refreshStorages');
|
||||
$this->name = '';
|
||||
$this->mount_path = '';
|
||||
$this->host_path = '';
|
||||
} catch (mixed $e) {
|
||||
dd('asdf');
|
||||
if ($e instanceof QueryException) {
|
||||
dd($e->errorInfo);
|
||||
$this->emit('error', $e->errorInfo[2]);
|
||||
} else {
|
||||
$this->emit('error', $e);
|
||||
}
|
||||
}
|
||||
$this->emitUp('submit', [
|
||||
'name' => $this->name,
|
||||
'mount_path' => $this->mount_path,
|
||||
'host_path' => $this->host_path,
|
||||
]);
|
||||
}
|
||||
public function clear()
|
||||
{
|
||||
$this->name = '';
|
||||
$this->mount_path = '';
|
||||
$this->host_path = null;
|
||||
}
|
||||
}
|
||||
|
@ -3,14 +3,32 @@
|
||||
namespace App\Http\Livewire\Project\Application\Storages;
|
||||
|
||||
use App\Models\Application;
|
||||
use App\Models\LocalPersistentVolume;
|
||||
use Illuminate\Database\QueryException;
|
||||
use Livewire\Component;
|
||||
|
||||
class All extends Component
|
||||
{
|
||||
public Application $application;
|
||||
protected $listeners = ['refreshStorages'];
|
||||
protected $listeners = ['refreshStorages', 'submit'];
|
||||
public function refreshStorages()
|
||||
{
|
||||
$this->application->refresh();
|
||||
}
|
||||
public function submit($data)
|
||||
{
|
||||
try {
|
||||
LocalPersistentVolume::create([
|
||||
'name' => $data['name'],
|
||||
'mount_path' => $data['mount_path'],
|
||||
'host_path' => $data['host_path'],
|
||||
'resource_id' => $this->application->id,
|
||||
'resource_type' => Application::class,
|
||||
]);
|
||||
$this->application->refresh();
|
||||
$this->emit('clearAddStorage');
|
||||
} catch (\Exception $e) {
|
||||
return generalErrorHandlerLivewire($e, $this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ use App\Actions\CoolifyTask\PrepareCoolifyTask;
|
||||
use App\Data\CoolifyTaskArgs;
|
||||
use App\Models\Server;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\QueryException;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Facades\Http;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
@ -11,6 +12,20 @@ use Illuminate\Support\Facades\Process;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Spatie\Activitylog\Contracts\Activity;
|
||||
|
||||
if (!function_exists('generalErrorHandlerLivewire')) {
|
||||
function generalErrorHandlerLivewire(\Throwable $e, $that)
|
||||
{
|
||||
if ($e instanceof QueryException) {
|
||||
if ($e->errorInfo[0] === '23505') {
|
||||
$that->emit('error', 'Duplicate entry found.');
|
||||
} else {
|
||||
$that->emit('error', $e->errorInfo[3]);
|
||||
}
|
||||
} else {
|
||||
$that->emit('error', $e);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!function_exists('remoteProcess')) {
|
||||
/**
|
||||
* Run a Remote Process, which SSH's asynchronously into a machine to run the command(s).
|
||||
|
@ -13,7 +13,8 @@
|
||||
'flex flex-col' => $type !== 'checkbox',
|
||||
])>
|
||||
@if (!$noLabel)
|
||||
<label for={{ $id }}>
|
||||
<label for={{ $id }} @if (!$noDirty) wire:dirty.class="text-amber-300" @endif
|
||||
wire:target={{ $id }}>
|
||||
@if ($label)
|
||||
{{ $label }}
|
||||
@else
|
||||
@ -29,8 +30,8 @@
|
||||
required={{ $required }} type={{ $type }} id={{ $id }} wire:model.defer={{ $id }}></textarea>
|
||||
@else
|
||||
<input {{ $attributes }} @if ($required) required @endif
|
||||
@if (!$noDirty) wire:dirty.class="text-black bg-amber-300" @endif type={{ $type }}
|
||||
id={{ $id }}
|
||||
@if (!$noDirty) wire:dirty.class="text-black bg-amber-300" @endif
|
||||
type={{ $type }} id={{ $id }}
|
||||
@if ($instantSave) wire:click='instantSave' wire:model.defer={{ $id }} @else wire:model.defer={{ $value ?? $id }} @endif />
|
||||
@endif
|
||||
@error($id)
|
||||
|
@ -3,8 +3,7 @@
|
||||
<x-inputs.input noDirty id="value" label="Value" required />
|
||||
<div class="flex flex-col">
|
||||
<div class="flex items-center gap-2">
|
||||
<input type="checkbox" wire:model.defer="is_build_time" />
|
||||
<label>Build Variable?</label>
|
||||
<x-inputs.input noDirty type="checkbox" id="is_build_time" label="Build Variable?" />
|
||||
</div>
|
||||
</div>
|
||||
<x-inputs.button type="submit">
|
||||
|
@ -1,11 +1,10 @@
|
||||
<div x-data="{ deleteEnvironment: false }">
|
||||
<form wire:submit.prevent='submit' class="flex gap-2 px-2">
|
||||
<input type="text" wire:model.defer="env.key" wire:dirty.class="text-black bg-amber-300" />
|
||||
<input type="text" wire:model.defer="env.value" wire:dirty.class="text-black bg-amber-300" />
|
||||
<x-inputs.input id="env.key" noLabel />
|
||||
<x-inputs.input id="env.value" noLabel />
|
||||
<div class="flex flex-col">
|
||||
<div class="flex items-center gap-2">
|
||||
<input type="checkbox" wire:model.defer="env.is_build_time" />
|
||||
<label wire:dirty.class="text-amber-300" wire:target="env.is_build_time">Build Variable?</label>
|
||||
<x-inputs.input type="checkbox" id="env.is_build_time" label="Build Variable?" />
|
||||
</div>
|
||||
</div>
|
||||
<x-inputs.button type="submit">
|
||||
|
Loading…
x
Reference in New Issue
Block a user