From 8cf36be4b525b1189a85fa67398ee90604348b85 Mon Sep 17 00:00:00 2001 From: Kamil Tekiela Date: Fri, 1 Sep 2023 00:39:18 +0100 Subject: [PATCH] Optimize autocomplete Signed-off-by: Kamil Tekiela --- js/src/modules/functions.ts | 27 +++++++------------ .../Database/SqlAutoCompleteController.php | 15 ++++++++++- 2 files changed, 23 insertions(+), 19 deletions(-) diff --git a/js/src/modules/functions.ts b/js/src/modules/functions.ts index 6aca6566cd..7fab9a2b7e 100644 --- a/js/src/modules/functions.ts +++ b/js/src/modules/functions.ts @@ -1212,24 +1212,15 @@ function codeMirrorAutoCompleteOnInputRead (instance) { columns: [] }; - for (var column in columns) { - if (columns.hasOwnProperty(column)) { - var displayText = columns[column].Type; - if (columns[column].Key === 'PRI') { - displayText += ' | Primary'; - } else if (columns[column].Key === 'UNI') { - displayText += ' | Unique'; - } - - // @ts-ignore - table.columns.push({ - text: column, - displayText: column + ' | ' + displayText, - columnName: column, - columnHint: displayText, - render: columnHintRender - }); - } + for (let column of columns) { + // @ts-ignore + table.columns.push({ + text: column.field, + displayText: column.field + ' | ' + column.columnHint, + columnName: column.field, + columnHint: column.columnHint, + render: columnHintRender + }); } } diff --git a/src/Controllers/Database/SqlAutoCompleteController.php b/src/Controllers/Database/SqlAutoCompleteController.php index 347a902513..1173aa1abd 100644 --- a/src/Controllers/Database/SqlAutoCompleteController.php +++ b/src/Controllers/Database/SqlAutoCompleteController.php @@ -11,6 +11,9 @@ use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Template; +use function array_map; +use function array_values; + /** * Table/Column autocomplete in SQL editors. */ @@ -29,7 +32,17 @@ class SqlAutoCompleteController extends AbstractController if ($db) { $tableNames = $this->dbi->getTables($db); foreach ($tableNames as $tableName) { - $sqlAutocomplete[$tableName] = $this->dbi->getColumns($db, $tableName); + $sqlAutocomplete[$tableName] = array_map( + static fn (array $field): array => [ + 'field' => $field['Field'], + 'columnHint' => $field['Type'] . match ($field['Key']) { + 'PRI' => ' | Primary', + 'UNI' => ' | Unique', + default=> '' + }, + ], + array_values($this->dbi->getColumns($db, $tableName)), + ); } } }