From 3da1f4fe4cf659e2e660e6f31577427b0df1e6b7 Mon Sep 17 00:00:00 2001 From: Saeed Vaziry <61919774+saeedvaziry@users.noreply.github.com> Date: Tue, 30 Jan 2024 20:45:17 +0100 Subject: [PATCH] fix server not having default service (#100) --- app/Models/Server.php | 13 +++++++++++++ tests/Feature/Models/ServerModelTest.php | 20 ++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 tests/Feature/Models/ServerModelTest.php diff --git a/app/Models/Server.php b/app/Models/Server.php index 7f9860f..8092c49 100755 --- a/app/Models/Server.php +++ b/app/Models/Server.php @@ -4,6 +4,7 @@ use App\Contracts\ServerType; use App\Enums\ServerStatus; +use App\Enums\ServiceStatus; use App\Facades\Notifier; use App\Facades\SSH; use App\Jobs\Installation\Upgrade; @@ -227,6 +228,18 @@ public function defaultService($type): ?Service ->where('is_default', 1) ->first(); + // If no default service found, get the first service with status ready or stopped + if (! $service) { + $service = $this->services() + ->where('type', $type) + ->whereIn('status', [ServiceStatus::READY, ServiceStatus::STOPPED]) + ->first(); + if ($service) { + $service->is_default = 1; + $service->save(); + } + } + return $service; } diff --git a/tests/Feature/Models/ServerModelTest.php b/tests/Feature/Models/ServerModelTest.php new file mode 100644 index 0000000..179fce6 --- /dev/null +++ b/tests/Feature/Models/ServerModelTest.php @@ -0,0 +1,20 @@ +server->defaultService('php'); + $php->update(['is_default' => false]); + $this->assertNotNull($this->server->defaultService('php')); + $php->refresh(); + $this->assertTrue($php->is_default); + } +}