@@ -5,7 +5,12 @@ import type {
5
5
import type { YQLEntity , YqlAutocompleteResult } from '@gravity-ui/websql-autocomplete/yql' ;
6
6
import * as monaco from 'monaco-editor/esm/vs/editor/editor.api' ;
7
7
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' ;
9
14
10
15
import {
11
16
AggregateFunctions ,
@@ -174,6 +179,23 @@ async function getSimpleTypes() {
174
179
return SimpleTypes ;
175
180
}
176
181
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
+
177
199
export async function generateColumnsSuggestion (
178
200
rangeToInsertSuggestion : monaco . IRange ,
179
201
suggestColumns : YqlAutocompleteResult [ 'suggestColumns' ] | undefined ,
@@ -224,9 +246,11 @@ export async function generateColumnsSuggestion(
224
246
) ;
225
247
226
248
autocompleteResponse . Result . Entities . forEach ( ( col ) => {
227
- if ( col . Type !== 'column' ) {
249
+ if ( ! isAutocompleteColumn ( col ) ) {
228
250
return ;
229
251
}
252
+
253
+ const columnDetails = getColumnDetails ( col ) ;
230
254
const normalizedName = wrapStringToBackticks ( col . Name ) ;
231
255
232
256
const normalizedParentName = normalizeEntityPrefix ( col . Parent , database ) ;
@@ -236,9 +260,9 @@ export async function generateColumnsSuggestion(
236
260
aliases . forEach ( ( a ) => {
237
261
const columnNameSuggestion = `${ a } .${ normalizedName } ` ;
238
262
suggestions . push ( {
239
- label : columnNameSuggestion ,
263
+ label : { label : columnNameSuggestion , description : columnDetails } ,
240
264
insertText : columnNameSuggestion ,
241
- kind : CompletionItemKind . Field ,
265
+ kind : CompletionItemKind . Variable ,
242
266
detail : 'Column' ,
243
267
range : rangeToInsertSuggestion ,
244
268
sortText :
@@ -253,9 +277,12 @@ export async function generateColumnsSuggestion(
253
277
columnNameSuggestion = `${ wrapStringToBackticks ( normalizedParentName ) } .${ normalizedName } ` ;
254
278
}
255
279
suggestions . push ( {
256
- label : columnNameSuggestion ,
280
+ label : {
281
+ label : columnNameSuggestion ,
282
+ description : columnDetails ,
283
+ } ,
257
284
insertText : columnNameSuggestion ,
258
- kind : CompletionItemKind . Field ,
285
+ kind : CompletionItemKind . Variable ,
259
286
detail : 'Column' ,
260
287
range : rangeToInsertSuggestion ,
261
288
sortText :
@@ -266,12 +293,11 @@ export async function generateColumnsSuggestion(
266
293
}
267
294
} ) ;
268
295
if ( normalizedColumns && normalizedColumns . length > 0 ) {
269
- const allColumsn = normalizedColumns . join ( ', ' ) ;
296
+ const allColumns = normalizedColumns . join ( ', ' ) ;
270
297
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 ,
275
301
range : rangeToInsertSuggestion ,
276
302
sortText : suggestionIndexToWeight ( getSuggestionIndex ( 'suggestAllColumns' ) ) ,
277
303
} ) ;
@@ -289,7 +315,7 @@ export function generateColumnAliasesSuggestion(
289
315
return suggestColumnAliases ?. map ( ( columnAliasSuggestion ) => ( {
290
316
label : columnAliasSuggestion . name ,
291
317
insertText : columnAliasSuggestion . name ,
292
- kind : CompletionItemKind . Field ,
318
+ kind : CompletionItemKind . Variable ,
293
319
detail : 'Column alias' ,
294
320
range : rangeToInsertSuggestion ,
295
321
sortText : suggestionIndexToWeight ( getSuggestionIndex ( 'suggestColumnAliases' ) ) ,
0 commit comments