fix: do not allow to delete env if a resource is defined

This commit is contained in:
Andras Bacsai 2023-10-24 10:11:21 +02:00
parent 554222abc7
commit 8bfc1a7c06
4 changed files with 12 additions and 12 deletions

View File

@ -21,10 +21,10 @@ public function delete()
'environment_id' => 'required|int', 'environment_id' => 'required|int',
]); ]);
$environment = Environment::findOrFail($this->environment_id); $environment = Environment::findOrFail($this->environment_id);
if ($environment->applications->count() > 0) { if ($environment->isEmpty()) {
return $this->emit('error', 'Environment has resources defined, please delete them first.');
}
$environment->delete(); $environment->delete();
return redirect()->route('project.show', ['project_uuid' => $this->parameters['project_uuid']]); return redirect()->route('project.show', ['project_uuid' => $this->parameters['project_uuid']]);
} }
return $this->emit('error', 'Environment has defined resources, please delete them first.');
}
} }

View File

@ -12,7 +12,7 @@ class Environment extends Model
'project_id', 'project_id',
]; ];
public function can_delete_environment() public function isEmpty()
{ {
return $this->applications()->count() == 0 && return $this->applications()->count() == 0 &&
$this->redis()->count() == 0 && $this->redis()->count() == 0 &&

View File

@ -18,7 +18,7 @@ protected static function booted()
'project_id' => $project->id, 'project_id' => $project->id,
]); ]);
Environment::create([ Environment::create([
'name' => 'Production', 'name' => 'production',
'project_id' => $project->id, 'project_id' => $project->id,
]); ]);
}); });

View File

@ -2,17 +2,17 @@
<div class="flex flex-col"> <div class="flex flex-col">
<div class="flex items-center gap-2"> <div class="flex items-center gap-2">
<h1>Resources</h1> <h1>Resources</h1>
@if ($environment->can_delete_environment()) <a class="font-normal text-white normal-case border-none rounded hover:no-underline btn btn-primary btn-sm no-animation"
href="{{ route('project.clone', ['project_uuid' => data_get($project, 'uuid'), 'environment_name' => request()->route('environment_name')]) }}">
Clone
</a>
@if ($environment->isEmpty())
<livewire:project.delete-environment :environment_id="$environment->id" /> <livewire:project.delete-environment :environment_id="$environment->id" />
@else @else
<a href="{{ route('project.resources.new', ['project_uuid' => request()->route('project_uuid'), 'environment_name' => request()->route('environment_name')]) }} " <a href="{{ route('project.resources.new', ['project_uuid' => request()->route('project_uuid'), 'environment_name' => request()->route('environment_name')]) }} "
class="font-normal text-white normal-case border-none rounded hover:no-underline btn btn-primary btn-sm no-animation">+ class="font-normal text-white normal-case border-none rounded hover:no-underline btn btn-primary btn-sm no-animation">+
New</a> New</a>
@endif @endif
<a class="font-normal text-white normal-case border-none rounded hover:no-underline btn btn-primary btn-sm no-animation"
href="{{ route('project.clone', ['project_uuid' => data_get($project, 'uuid'), 'environment_name' => request()->route('environment_name')]) }}">
Clone
</a>
</div> </div>
<nav class="flex pt-2 pb-10"> <nav class="flex pt-2 pb-10">
<ol class="flex items-center"> <ol class="flex items-center">
@ -36,7 +36,7 @@ class="font-normal text-white normal-case border-none rounded hover:no-underline
</ol> </ol>
</nav> </nav>
</div> </div>
@if ($environment->can_delete_environment()) @if ($environment->isEmpty())
<a href="{{ route('project.resources.new', ['project_uuid' => request()->route('project_uuid'), 'environment_name' => request()->route('environment_name')]) }} " <a href="{{ route('project.resources.new', ['project_uuid' => request()->route('project_uuid'), 'environment_name' => request()->route('environment_name')]) }} "
class="items-center justify-center box">+ Add New Resource</a> class="items-center justify-center box">+ Add New Resource</a>
@endif @endif