diff --git a/app/Http/Controllers/Api/Deploy.php b/app/Http/Controllers/Api/Deploy.php index 322d73e67..04fc9b816 100644 --- a/app/Http/Controllers/Api/Deploy.php +++ b/app/Http/Controllers/Api/Deploy.php @@ -73,12 +73,17 @@ class Deploy extends Controller $message->push("Tag {$tag} not found."); continue; } - $resources = $found_tag->resources()->get(); - if ($resources->count() === 0) { + $applications = $found_tag->applications(); + $services = $found_tag->services(); + if ($applications->count() === 0 && $services->count() === 0) { $message->push("No resources found for tag {$tag}."); continue; } - foreach ($resources as $resource) { + foreach ($applications as $resource) { + $return_message = $this->deploy_resource($resource, $force); + $message = $message->merge($return_message); + } + foreach ($services as $resource) { $return_message = $this->deploy_resource($resource, $force); $message = $message->merge($return_message); } diff --git a/app/Livewire/Project/Shared/Tags.php b/app/Livewire/Project/Shared/Tags.php index db330b15c..fc17dcdf6 100644 --- a/app/Livewire/Project/Shared/Tags.php +++ b/app/Livewire/Project/Shared/Tags.php @@ -37,12 +37,13 @@ class Tags extends Component return handleError($e, $this); } } - public function deleteTag($id, $name) + public function deleteTag(string $id) { try { - $found_more_tags = Tag::where(['name' => $name, 'team_id' => currentTeam()->id])->first(); $this->resource->tags()->detach($id); - if ($found_more_tags->resources()->get()->count() == 0) { + + $found_more_tags = Tag::where(['id' => $id, 'team_id' => currentTeam()->id])->first(); + if ($found_more_tags->applications()->count() == 0 && $found_more_tags->services()->count() == 0){ $found_more_tags->delete(); } $this->refresh(); diff --git a/app/Livewire/Tags/Show.php b/app/Livewire/Tags/Show.php index 6a61a0851..8574646d7 100644 --- a/app/Livewire/Tags/Show.php +++ b/app/Livewire/Tags/Show.php @@ -10,14 +10,27 @@ use Livewire\Component; class Show extends Component { public Tag $tag; - public $resources; + public $applications; + public $services; public $webhook = null; public $deployments_per_tag_per_server = []; + public function mount() + { + $tag = Tag::ownedByCurrentTeam()->where('name', request()->tag_name)->first(); + if (!$tag) { + return redirect()->route('tags.index'); + } + $this->webhook = generatTagDeployWebhook($tag->name); + $this->applications = $tag->applications()->get(); + $this->services = $tag->services()->get(); + $this->tag = $tag; + $this->get_deployments(); + } public function get_deployments() { try { - $resource_ids = $this->resources->pluck('id'); + $resource_ids = $this->applications->pluck('id'); $this->deployments_per_tag_per_server = ApplicationDeploymentQueue::whereIn("status", ["in_progress", "queued"])->whereIn('application_id', $resource_ids)->get([ "id", "application_id", @@ -35,7 +48,11 @@ class Show extends Component public function redeploy_all() { try { - $this->resources->each(function ($resource) { + $this->applications->each(function ($resource) { + $deploy = new Deploy(); + $deploy->deploy_resource($resource); + }); + $this->services->each(function ($resource) { $deploy = new Deploy(); $deploy->deploy_resource($resource); }); @@ -44,17 +61,7 @@ class Show extends Component return handleError($e, $this); } } - public function mount() - { - $tag = Tag::ownedByCurrentTeam()->where('name', request()->tag_name)->first(); - if (!$tag) { - return redirect()->route('tags.index'); - } - $this->webhook = generatTagDeployWebhook($tag->name); - $this->resources = $tag->resources()->get(); - $this->tag = $tag; - $this->get_deployments(); - } + public function render() { return view('livewire.tags.show'); diff --git a/app/Models/Application.php b/app/Models/Application.php index b91acdcff..cf3141ed7 100644 --- a/app/Models/Application.php +++ b/app/Models/Application.php @@ -216,6 +216,9 @@ class Application extends BaseModel { return $this->morphToMany(Tag::class, 'taggable'); } + public function project() { + return data_get($this, 'environment.project'); + } public function team() { return data_get($this, 'environment.project.team'); diff --git a/app/Models/Service.php b/app/Models/Service.php index b6d5e86d3..244964db1 100644 --- a/app/Models/Service.php +++ b/app/Models/Service.php @@ -16,6 +16,10 @@ class Service extends BaseModel { return 'service'; } + public function project() + { + return data_get($this, 'environment.project'); + } public function team() { return data_get($this, 'environment.project.team'); diff --git a/app/Models/Tag.php b/app/Models/Tag.php index 02b3a7ff5..b7d50b84f 100644 --- a/app/Models/Tag.php +++ b/app/Models/Tag.php @@ -24,9 +24,8 @@ class Tag extends BaseModel { return $this->morphedByMany(Application::class, 'taggable'); } - - public function resources() { - return $this->applications(); + public function services() + { + return $this->morphedByMany(Service::class, 'taggable'); } - } diff --git a/resources/views/livewire/project/resource/index.blade.php b/resources/views/livewire/project/resource/index.blade.php index f87b7ea87..9f366ce55 100644 --- a/resources/views/livewire/project/resource/index.blade.php +++ b/resources/views/livewire/project/resource/index.blade.php @@ -46,7 +46,7 @@ @else