@@ -11,17 +11,36 @@ let intelliSenseTable = monaco.languages.registerCompletionItemProvider('sql', {
1111 } ,
1212} ) ;
1313
14+ /** 根据不同的数据库,插入不同的表名 */
15+ const handleInsertText = ( text , databaseCode : DatabaseTypeCode = DatabaseTypeCode . MYSQL ) => {
16+ if ( databaseCode === DatabaseTypeCode . POSTGRESQL ) {
17+ return `${ text } ` ;
18+ } else {
19+ return `${ text } ` ;
20+ }
21+ } ;
22+
23+ function checkTableContext ( text ) {
24+ const normalizedText = text . trim ( ) . toUpperCase ( ) ;
25+ const tableKeywords = [ 'FROM' , 'JOIN' , 'INNER JOIN' , 'LEFT JOIN' , 'RIGHT JOIN' , 'UPDATE' ] ;
26+
27+ for ( const keyword of tableKeywords ) {
28+ if ( normalizedText . endsWith ( keyword ) ) {
29+ return true ;
30+ }
31+ }
32+
33+ return false ;
34+ }
35+
1436const registerIntelliSenseTable = (
1537 tableList : Array < { name : string ; comment : string } > ,
1638 databaseCode ?: DatabaseTypeCode ,
1739 dataSourceId ?: number ,
1840 databaseName ?: string ,
1941 schemaName ?: string ,
2042) => {
21- monaco . editor . registerCommand ( 'myCustomCommand' , ( _ : any , ...args : any [ ] ) => {
22- // access the arguments here
23- console . log ( 'trigger suggest' , args [ 0 ] ) ;
24- // addIntelliSenseField(tableName)
43+ monaco . editor . registerCommand ( 'addFieldList' , ( _ : any , ...args : any [ ] ) => {
2544 addIntelliSenseField ( args [ 0 ] ) ;
2645 return ;
2746 } ) ;
@@ -30,13 +49,15 @@ const registerIntelliSenseTable = (
3049 intelliSenseTable = monaco . languages . registerCompletionItemProvider ( 'sql' , {
3150 triggerCharacters : [ ' ' ] ,
3251 provideCompletionItems : ( model , position ) => {
33- const handleInsertText = ( text ) => {
34- if ( databaseCode === DatabaseTypeCode . POSTGRESQL ) {
35- return `${ text } ` ;
36- } else {
37- return `${ text } ` ;
38- }
39- } ;
52+ const lineContentUntilPosition = model . getValueInRange ( {
53+ startLineNumber : position . lineNumber ,
54+ startColumn : 1 ,
55+ endLineNumber : position . lineNumber ,
56+ endColumn : position . column ,
57+ } ) ;
58+
59+ const isTableContext = checkTableContext ( lineContentUntilPosition ) ;
60+
4061 return {
4162 suggestions : ( tableList || [ ] ) . map ( ( tableName ) => {
4263 return {
@@ -46,12 +67,13 @@ const registerIntelliSenseTable = (
4667 description : '表名' ,
4768 } ,
4869 kind : monaco . languages . CompletionItemKind . Variable ,
49- insertText : handleInsertText ( tableName . name ) ,
70+ insertText : handleInsertText ( tableName . name , databaseCode ) ,
5071 // range: monaco.Range.fromPositions(position),
5172 documentation : tableName . comment ,
73+ sortText : ( isTableContext ? '01' : '02' ) + tableName . name ,
5274 command : {
53- id : 'myCustomCommand ' ,
54- title : 'operator_additional_suggestions ' ,
75+ id : 'addFieldList ' ,
76+ title : 'addFieldList ' ,
5577 arguments : [
5678 {
5779 tableName : tableName . name ,
0 commit comments