From 482e8ed6b2b0ea326c798f86ae350a9f8a51cc1c Mon Sep 17 00:00:00 2001 From: notCharles Date: Sun, 16 Jun 2024 13:50:28 -0400 Subject: [PATCH] Add Databases to Edit Server --- .../Resources/EggResource/Pages/ListEggs.php | 3 +- .../ServerResource/Pages/EditServer.php | 46 +++++++++++++++++-- 2 files changed, 43 insertions(+), 6 deletions(-) diff --git a/app/Filament/Resources/EggResource/Pages/ListEggs.php b/app/Filament/Resources/EggResource/Pages/ListEggs.php index e51f3bbfce..2547ce2cd4 100644 --- a/app/Filament/Resources/EggResource/Pages/ListEggs.php +++ b/app/Filament/Resources/EggResource/Pages/ListEggs.php @@ -29,8 +29,7 @@ public function table(Table $table): Table ->columns([ Tables\Columns\TextColumn::make('id') ->label('Id') - ->searchable() - ->sortable(), + ->hidden(), Tables\Columns\TextColumn::make('name') ->icon('tabler-egg') ->description(fn ($record): ?string => (strlen($record->description) > 120) ? substr($record->description, 0, 120).'...' : $record->description) diff --git a/app/Filament/Resources/ServerResource/Pages/EditServer.php b/app/Filament/Resources/ServerResource/Pages/EditServer.php index b8bfd83323..eb345aa77e 100644 --- a/app/Filament/Resources/ServerResource/Pages/EditServer.php +++ b/app/Filament/Resources/ServerResource/Pages/EditServer.php @@ -2,6 +2,10 @@ namespace App\Filament\Resources\ServerResource\Pages; +use App\Services\Databases\DatabaseManagementService; +use Filament\Forms\Components\Actions\Action; +use Filament\Forms\Components\Repeater; +use Filament\Forms\Components\TextInput; use LogicException; use App\Filament\Resources\ServerResource; use App\Http\Controllers\Admin\ServersController; @@ -587,9 +591,41 @@ public function form(Form $form): Form Tabs\Tab::make('Databases') ->icon('tabler-database') ->schema([ - Forms\Components\Placeholder::make('soon') - ->label('Soon™'), - ]), + Repeater::make('databases') + ->columnSpanFull() + ->grid() + ->schema([ + TextInput::make('db_name') + ->label('Database Name') + ->hintAction( + Action::make('Delete') + ->color('danger') + ->icon('tabler-trash') + ->action(fn (DatabaseManagementService $databaseManagementService, $record) => $databaseManagementService->delete($record)) + ) + ->formatStateUsing(fn ($record) => $record->database) + ->readOnly(), + TextInput::make('db_username') + ->label('Username') + ->inlineLabel() + ->formatStateUsing(fn ($record) => $record->username) + ->readOnly(), + TextInput::make('db_password') + ->label('Password') + ->inlineLabel() + ->formatStateUsing(fn ($record) => $record->password) + ->readOnly(), + TextInput::make('db_max_connections') + ->label('Max Connections') + ->inlineLabel() + ->formatStateUsing(fn ($record) => $record->max_connections < 1 ? 'Unlimited' : $record->max_connections) + ->readOnly(), + ]) + ->relationship('databases') + ->deletable(false) + ->addable(false) + ->columnSpan(4), + ])->columns(4), Tabs\Tab::make('Actions') ->icon('tabler-settings') ->schema([ @@ -709,7 +745,7 @@ public function form(Form $form): Form protected function transferServer(Form $form): Form { return $form - ->columns(2) + ->columns() ->schema([ Forms\Components\Select::make('toNode') ->label('New Node'), @@ -724,6 +760,8 @@ protected function getHeaderActions(): array Actions\DeleteAction::make('Delete') ->successRedirectUrl(route('filament.admin.resources.servers.index')) ->color('danger') + ->disabled(fn (Server $server) => $server->databases()->count() > 0) + ->label(fn (Server $server) => $server->databases()->count() > 0 ? 'Server has a Database' : 'Delete') ->after(fn (Server $server) => resolve(ServerDeletionService::class)->handle($server)) ->requiresConfirmation(), Actions\Action::make('console')