@@ -5,7 +5,12 @@ import type {
55import type { YQLEntity , YqlAutocompleteResult } from '@gravity-ui/websql-autocomplete/yql' ;
66import * as monaco from 'monaco-editor/esm/vs/editor/editor.api' ;
77
8- import type { AutocompleteEntityType , TAutocompleteEntity } from '../../../types/api/autocomplete' ;
8+ import { isAutocompleteColumn } from '../../../types/api/autocomplete' ;
9+ import type {
10+ AutocompleteColumn ,
11+ AutocompleteEntityType ,
12+ TAutocompleteEntity ,
13+ } from '../../../types/api/autocomplete' ;
914
1015import {
1116 AggregateFunctions ,
@@ -174,6 +179,23 @@ async function getSimpleTypes() {
174179 return SimpleTypes ;
175180}
176181
182+ function getColumnDetails ( col : AutocompleteColumn ) {
183+ const { PKIndex, NotNull, Default} = col ;
184+ const details = [ ] ;
185+ if ( PKIndex !== undefined ) {
186+ details . push ( `PK${ PKIndex } ` ) ;
187+ }
188+ if ( NotNull ) {
189+ details . push ( 'NN' ) ;
190+ }
191+ if ( Default ) {
192+ details . push ( 'Default' ) ;
193+ }
194+ const detailsString = details . length ? details . join ( ', ' ) : '' ;
195+ // return `Column${detailsString}`;
196+ return detailsString ;
197+ }
198+
177199export async function generateColumnsSuggestion (
178200 rangeToInsertSuggestion : monaco . IRange ,
179201 suggestColumns : YqlAutocompleteResult [ 'suggestColumns' ] | undefined ,
@@ -224,9 +246,11 @@ export async function generateColumnsSuggestion(
224246 ) ;
225247
226248 autocompleteResponse . Result . Entities . forEach ( ( col ) => {
227- if ( col . Type !== 'column' ) {
249+ if ( ! isAutocompleteColumn ( col ) ) {
228250 return ;
229251 }
252+
253+ const columnDetails = getColumnDetails ( col ) ;
230254 const normalizedName = wrapStringToBackticks ( col . Name ) ;
231255
232256 const normalizedParentName = normalizeEntityPrefix ( col . Parent , database ) ;
@@ -236,9 +260,9 @@ export async function generateColumnsSuggestion(
236260 aliases . forEach ( ( a ) => {
237261 const columnNameSuggestion = `${ a } .${ normalizedName } ` ;
238262 suggestions . push ( {
239- label : columnNameSuggestion ,
263+ label : { label : columnNameSuggestion , description : columnDetails } ,
240264 insertText : columnNameSuggestion ,
241- kind : CompletionItemKind . Field ,
265+ kind : CompletionItemKind . Variable ,
242266 detail : 'Column' ,
243267 range : rangeToInsertSuggestion ,
244268 sortText :
@@ -253,9 +277,12 @@ export async function generateColumnsSuggestion(
253277 columnNameSuggestion = `${ wrapStringToBackticks ( normalizedParentName ) } .${ normalizedName } ` ;
254278 }
255279 suggestions . push ( {
256- label : columnNameSuggestion ,
280+ label : {
281+ label : columnNameSuggestion ,
282+ description : columnDetails ,
283+ } ,
257284 insertText : columnNameSuggestion ,
258- kind : CompletionItemKind . Field ,
285+ kind : CompletionItemKind . Variable ,
259286 detail : 'Column' ,
260287 range : rangeToInsertSuggestion ,
261288 sortText :
@@ -266,12 +293,11 @@ export async function generateColumnsSuggestion(
266293 }
267294 } ) ;
268295 if ( normalizedColumns && normalizedColumns . length > 0 ) {
269- const allColumsn = normalizedColumns . join ( ', ' ) ;
296+ const allColumns = normalizedColumns . join ( ', ' ) ;
270297 suggestions . push ( {
271- label : allColumsn ,
272- insertText : allColumsn ,
273- kind : CompletionItemKind . Field ,
274- detail : 'All columns' ,
298+ label : allColumns ,
299+ insertText : allColumns ,
300+ kind : CompletionItemKind . Variable ,
275301 range : rangeToInsertSuggestion ,
276302 sortText : suggestionIndexToWeight ( getSuggestionIndex ( 'suggestAllColumns' ) ) ,
277303 } ) ;
@@ -289,7 +315,7 @@ export function generateColumnAliasesSuggestion(
289315 return suggestColumnAliases ?. map ( ( columnAliasSuggestion ) => ( {
290316 label : columnAliasSuggestion . name ,
291317 insertText : columnAliasSuggestion . name ,
292- kind : CompletionItemKind . Field ,
318+ kind : CompletionItemKind . Variable ,
293319 detail : 'Column alias' ,
294320 range : rangeToInsertSuggestion ,
295321 sortText : suggestionIndexToWeight ( getSuggestionIndex ( 'suggestColumnAliases' ) ) ,
0 commit comments