Optimize autocomplete

Signed-off-by: Kamil Tekiela <tekiela246@gmail.com>
This commit is contained in:
Kamil Tekiela 2023-09-01 00:39:18 +01:00
parent 7cace9931a
commit 8cf36be4b5
2 changed files with 23 additions and 19 deletions

View File

@ -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
});
}
}

View File

@ -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)),
);
}
}
}