*/ protected function getDefaultHeaderActions(): array { /** @var Server $server */ $server = Filament::getTenant(); return [ CreateAction::make('new') ->hiddenLabel()->iconButton()->iconSize(IconSize::Large) ->icon(fn () => $server->databases()->count() >= $server->database_limit ? 'tabler-database-x' : 'tabler-database-plus') ->tooltip(fn () => $server->databases()->count() >= $server->database_limit ? trans('server/database.limit') : trans('server/database.create_database')) ->disabled(fn () => $server->databases()->count() >= $server->database_limit) ->color(fn () => $server->databases()->count() >= $server->database_limit ? 'danger' : 'primary') ->createAnother(false) ->form([ Grid::make() ->columns(2) ->schema([ Select::make('database_host_id') ->label(trans('server/database.database_host')) ->columnSpan(2) ->required() ->placeholder(trans('server/database.database_host_select')) ->options(fn () => $server->node->databaseHosts->mapWithKeys(fn (DatabaseHost $databaseHost) => [$databaseHost->id => $databaseHost->name])), TextInput::make('database') ->label(trans('server/database.name')) ->columnSpan(1) ->prefix('s'. $server->id . '_') ->hintIcon('tabler-question-mark') ->hintIconTooltip(trans('server/database.name_hint')), TextInput::make('remote') ->label(trans('server/database.connections_from')) ->columnSpan(1) ->default('%'), ]), ]) ->action(function ($data, DatabaseManagementService $service) use ($server) { $data['database'] ??= Str::random(12); $data['database'] = $service->generateUniqueDatabaseName($data['database'], $server->id); try { $service->create($server, $data); Notification::make() ->title(trans('server/database.create_notification', ['database' => $data['database']])) ->success() ->send(); } catch (Exception $exception) { Notification::make() ->title(trans('server/database.create_notification_fail', ['database' => $data['database']])) ->danger() ->send(); report($exception); } }), ]; } public function getBreadcrumbs(): array { return []; } public function getTitle(): string { return trans('server/database.title'); } }