From 7be3c6f2b752b15e34b7e722a8e56c6f2f849914 Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Wed, 11 Dec 2024 17:18:32 +0100 Subject: [PATCH] refactor: improve migration command and enhance application model with global scope and status checks --- app/Console/Commands/Migration.php | 2 +- app/Models/Application.php | 33 ++++++++++++++++++------------ 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/app/Console/Commands/Migration.php b/app/Console/Commands/Migration.php index 58b94fd55..44c17203b 100644 --- a/app/Console/Commands/Migration.php +++ b/app/Console/Commands/Migration.php @@ -14,7 +14,7 @@ class Migration extends Command { if (config('constants.migration.is_migration_enabled')) { $this->info('Migration is enabled on this server.'); - $this->call('migrate --force --isolated'); + $this->call('migrate', ['--force' => true, '--isolated' => true]); exit(0); } else { $this->info('Migration is disabled on this server.'); diff --git a/app/Models/Application.php b/app/Models/Application.php index 7fc114094..bfb2a1041 100644 --- a/app/Models/Application.php +++ b/app/Models/Application.php @@ -115,6 +115,12 @@ class Application extends BaseModel protected static function booted() { + static::addGlobalScope('withRelations', function ($builder) { + $builder->withCount([ + 'additional_servers', + 'additional_networks', + ]); + }); static::saving(function ($application) { $payload = []; if ($application->isDirty('fqdn')) { @@ -551,20 +557,21 @@ class Application extends BaseModel { return Attribute::make( get: function () { - if ($this->additional_servers->count() === 0) { - return $this->destination->server->isFunctional(); - } else { - $additional_servers_status = $this->additional_servers->pluck('pivot.status'); - $main_server_status = $this->destination->server->isFunctional(); - foreach ($additional_servers_status as $status) { - $server_status = str($status)->before(':')->value(); - if ($server_status !== 'running') { - return false; - } - } - - return $main_server_status; + if (! $this->relationLoaded('additional_servers') || $this->additional_servers->count() === 0) { + return $this->destination?->server?->isFunctional() ?? false; } + + $additional_servers_status = $this->additional_servers->pluck('pivot.status'); + $main_server_status = $this->destination?->server?->isFunctional() ?? false; + + foreach ($additional_servers_status as $status) { + $server_status = str($status)->before(':')->value(); + if ($server_status !== 'running') { + return false; + } + } + + return $main_server_status; } ); }