From 0cd03e95f41b56849f4c554408ba09c99bf71b08 Mon Sep 17 00:00:00 2001 From: notCharles Date: Wed, 15 May 2024 21:21:57 -0400 Subject: [PATCH] Update database view --- .../DatabasesRelationManager.php | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/app/Filament/Resources/DatabaseHostResource/RelationManagers/DatabasesRelationManager.php b/app/Filament/Resources/DatabaseHostResource/RelationManagers/DatabasesRelationManager.php index a531c4752..00dd88124 100644 --- a/app/Filament/Resources/DatabaseHostResource/RelationManagers/DatabasesRelationManager.php +++ b/app/Filament/Resources/DatabaseHostResource/RelationManagers/DatabasesRelationManager.php @@ -2,7 +2,11 @@ namespace App\Filament\Resources\DatabaseHostResource\RelationManagers; +use App\Models\Database; +use App\Models\DatabaseHost; +use App\Services\Databases\DatabasePasswordService; use Filament\Forms; +use Filament\Forms\Components\Actions\Action; use Filament\Forms\Form; use Filament\Resources\RelationManagers\RelationManager; use Filament\Tables; @@ -12,21 +16,32 @@ class DatabasesRelationManager extends RelationManager { protected static string $relationship = 'databases'; + protected $listeners = ['refresh'=>'refreshForm']; + public function form(Form $form): Form { return $form ->schema([ Forms\Components\TextInput::make('database')->columnSpanFull(), Forms\Components\TextInput::make('username'), - Forms\Components\TextInput::make('password')->default('Soon™'), + Forms\Components\TextInput::make('password') + ->hintAction( + Action::make('rotate') + ->icon('tabler-refresh') + ->requiresConfirmation() + ->action(fn (DatabasePasswordService $service, Database $db) => $service->handle($db)) + ) + ->formatStateUsing(fn (Database $database) => decrypt($database->password)), Forms\Components\TextInput::make('remote')->label('Connections From'), Forms\Components\TextInput::make('max_connections'), - Forms\Components\TextInput::make('JDBC')->label('JDBC Connection String')->columnSpanFull()->default('Soon™'), + Forms\Components\TextInput::make('JDBC') + ->label('JDBC Connection String') + ->columnSpanFull() + ->formatStateUsing(fn (Forms\Get $get, Database $database) => 'jdbc:mysql://' . $get('username') . ':' . urlencode(decrypt($database->password)) . '@' . $database->host->host . ':' . $database->host->port . '/' . $get('database')), Forms\Components\TextInput::make('created_at'), Forms\Components\TextInput::make('updated_at'), ]); } - public function table(Table $table): Table { return $table @@ -36,8 +51,7 @@ class DatabasesRelationManager extends RelationManager Tables\Columns\TextColumn::make('username'), //Tables\Columns\TextColumn::make('password'), Tables\Columns\TextColumn::make('remote'), - Tables\Columns\TextColumn::make('server_id') - ->label('Belongs To'), + Tables\Columns\TextColumn::make('server.name'), // TODO ->url(route('filament.admin.resources.servers.edit', ['record', ''])), Tables\Columns\TextColumn::make('max_connections'), Tables\Columns\TextColumn::make('created_at'),