From 02d7ad04adf95259762353f0a6df629cb9a88fa2 Mon Sep 17 00:00:00 2001 From: MartinOscar <40749467+rmartinoscar@users.noreply.github.com> Date: Sat, 12 Apr 2025 16:44:24 +0200 Subject: [PATCH] Fix `serverVariables` not saving due to `join` (#1235) * Fix `serverVariables` not saving due to `join` * Remove deprecated `viewableServerVariables` --- .../Resources/ServerResource/Pages/CreateServer.php | 2 +- .../Admin/Resources/ServerResource/Pages/EditServer.php | 4 +--- app/Filament/Server/Pages/Startup.php | 3 ++- .../Controllers/Api/Client/Servers/StartupController.php | 2 +- app/Models/Server.php | 9 --------- 5 files changed, 5 insertions(+), 15 deletions(-) diff --git a/app/Filament/Admin/Resources/ServerResource/Pages/CreateServer.php b/app/Filament/Admin/Resources/ServerResource/Pages/CreateServer.php index 6508c42f6..51d62cfc5 100644 --- a/app/Filament/Admin/Resources/ServerResource/Pages/CreateServer.php +++ b/app/Filament/Admin/Resources/ServerResource/Pages/CreateServer.php @@ -426,7 +426,7 @@ class CreateServer extends CreateRecord Repeater::make('server_variables') ->label('') - ->relationship('serverVariables') + ->relationship('serverVariables', fn (Builder $query) => $query->orderByPowerJoins('variable.sort')) ->saveRelationshipsBeforeChildrenUsing(null) ->saveRelationshipsUsing(null) ->grid(2) diff --git a/app/Filament/Admin/Resources/ServerResource/Pages/EditServer.php b/app/Filament/Admin/Resources/ServerResource/Pages/EditServer.php index 87e61954e..cb811b540 100644 --- a/app/Filament/Admin/Resources/ServerResource/Pages/EditServer.php +++ b/app/Filament/Admin/Resources/ServerResource/Pages/EditServer.php @@ -595,9 +595,7 @@ class EditServer extends EditRecord ]); } - return $query - ->join('egg_variables', 'server_variables.variable_id', '=', 'egg_variables.id') - ->orderBy('egg_variables.sort'); + return $query->orderByPowerJoins('variable.sort'); }) ->grid() ->mutateRelationshipDataBeforeSaveUsing(function (array &$data): array { diff --git a/app/Filament/Server/Pages/Startup.php b/app/Filament/Server/Pages/Startup.php index 6275e0437..d95704a5a 100644 --- a/app/Filament/Server/Pages/Startup.php +++ b/app/Filament/Server/Pages/Startup.php @@ -18,6 +18,7 @@ use Filament\Forms\Components\Textarea; use Filament\Forms\Components\TextInput; use Filament\Forms\Form; use Filament\Notifications\Notification; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Support\Facades\Validator; class Startup extends ServerFormPage @@ -100,7 +101,7 @@ class Startup extends ServerFormPage ->schema([ Repeater::make('server_variables') ->label('') - ->relationship('viewableServerVariables') + ->relationship('serverVariables', fn (Builder $query) => $query->where('egg_variables.user_viewable', true)->orderByPowerJoins('variable.sort')) ->grid() ->disabled(fn () => !auth()->user()->can(Permission::ACTION_STARTUP_UPDATE, $server)) ->reorderable(false)->addable(false)->deletable(false) diff --git a/app/Http/Controllers/Api/Client/Servers/StartupController.php b/app/Http/Controllers/Api/Client/Servers/StartupController.php index 0e09ae202..5b8c1a26c 100644 --- a/app/Http/Controllers/Api/Client/Servers/StartupController.php +++ b/app/Http/Controllers/Api/Client/Servers/StartupController.php @@ -37,7 +37,7 @@ class StartupController extends ClientApiController $startup = $this->startupCommandService->handle($server); return $this->fractal->collection( - $server->variables()->orderBy('sort')->where('user_viewable', true)->get() + $server->variables()->where('user_viewable', true)->orderBy('sort')->get() ) ->transformWith($this->getTransformer(EggVariableTransformer::class)) ->addMeta([ diff --git a/app/Models/Server.php b/app/Models/Server.php index 9d61c4310..6285079ed 100644 --- a/app/Models/Server.php +++ b/app/Models/Server.php @@ -310,15 +310,6 @@ class Server extends Model implements Validatable return $this->hasMany(ServerVariable::class); } - /** @deprecated use serverVariables */ - public function viewableServerVariables(): HasMany - { - return $this->serverVariables() - ->join('egg_variables', 'egg_variables.id', '=', 'server_variables.variable_id') - ->orderBy('egg_variables.sort') - ->where('egg_variables.user_viewable', true); - } - /** * Gets information for the node associated with this server. */