@@ -12,7 +12,7 @@ import com.intellij.database.model.ObjectKind
12
12
import com.intellij.database.psi.DbPsiFacade
13
13
import com.intellij.database.util.DasUtil
14
14
import com.intellij.openapi.application.ApplicationManager
15
- import com.intellij.openapi.application.ReadAction
15
+ import com.intellij.openapi.command.WriteCommandAction
16
16
import com.intellij.openapi.diagnostic.logger
17
17
import com.intellij.openapi.editor.Editor
18
18
import com.intellij.openapi.progress.ProgressIndicator
@@ -69,34 +69,37 @@ class GenSqlScriptBySelection : AbstractChatIntention() {
69
69
ApplicationManager .getApplication().invokeLater {
70
70
71
71
ProgressManager .getInstance()
72
- .run (generateSqlWorkflow(project, contentPanel, prompter ))
72
+ .run (generateSqlWorkflow(project, prompter, editor ))
73
73
}
74
74
}
75
75
}
76
76
77
77
private fun generateSqlWorkflow (
78
78
project : Project ,
79
- ui : ChatCodingPanel ,
80
79
flow : GenSqlFlow ,
80
+ editor : Editor ,
81
81
) =
82
82
object : Task .Backgroundable (project, " Loading retained test failure" , true ) {
83
83
override fun run (indicator : ProgressIndicator ) {
84
84
indicator.fraction = 0.2
85
85
86
86
87
87
indicator.text = AutoDevBundle .message(" migration.database.sql.generate.clarify" )
88
- val tables = ReadAction .compute<String , Throwable > {
89
- flow.clarify()
90
- }
88
+ val tables = flow.clarify()
91
89
90
+ logger.info(" Tables: $tables " )
92
91
// tables will be list in string format, like: `[table1, table2]`, we need to parse to Lists
93
92
val tableNames = tables.substringAfter(" [" ).substringBefore(" ]" )
94
93
.split(" , " ).map { it.trim() }
95
94
96
95
indicator.fraction = 0.6
96
+ indicator.text = AutoDevBundle .message(" migration.database.sql.generate.generate" )
97
97
val sqlScript = flow.generate(tableNames)
98
98
99
99
logger.info(" SQL Script: $sqlScript " )
100
+ WriteCommandAction .runWriteCommandAction(project, " Gen SQL" , " cc.unitmesh.livingDoc" , {
101
+ editor.document.insertString(editor.caretModel.offset, sqlScript)
102
+ })
100
103
101
104
indicator.fraction = 1.0
102
105
}
@@ -113,9 +116,13 @@ class GenSqlFlow(
113
116
114
117
fun clarify (): String {
115
118
val stepOnePrompt = generateStepOnePrompt(dbContext, actions)
116
- ui.addMessage(stepOnePrompt, true , stepOnePrompt)
117
- // for answer
118
- ui.addMessage(AutoDevBundle .message(" autodev.loading" ))
119
+ try {
120
+ ui.addMessage(stepOnePrompt, true , stepOnePrompt)
121
+ // for answer
122
+ ui.addMessage(AutoDevBundle .message(" autodev.loading" ))
123
+ } catch (e: Exception ) {
124
+ logger.error(" Error: $e " )
125
+ }
119
126
120
127
return runBlocking {
121
128
val prompt = llm.stream(stepOnePrompt, " " )
@@ -125,17 +132,20 @@ class GenSqlFlow(
125
132
126
133
fun generate (tableNames : List <String >): String {
127
134
val stepTwoPrompt = generateStepTwoPrompt(dbContext, actions, tableNames)
128
- ui.addMessage(stepTwoPrompt, true , stepTwoPrompt)
129
- // for answer
130
- ui.addMessage(AutoDevBundle .message(" autodev.loading" ))
135
+ try {
136
+ ui.addMessage(stepTwoPrompt, true , stepTwoPrompt)
137
+ // for answer
138
+ ui.addMessage(AutoDevBundle .message(" autodev.loading" ))
139
+ } catch (e: Exception ) {
140
+ logger.error(" Error: $e " )
141
+ }
131
142
132
143
return runBlocking {
133
144
val prompt = llm.stream(stepTwoPrompt, " " )
134
145
return @runBlocking ui.updateMessage(prompt)
135
146
}
136
147
}
137
148
138
-
139
149
private fun generateStepOnePrompt (context : DbContext , actions : DbContextActionProvider ): String {
140
150
val templateRender = TemplateRender (" genius/sql" )
141
151
val template = templateRender.getTemplate(" sql-gen-clarify.vm" )
@@ -155,7 +165,7 @@ class GenSqlFlow(
155
165
tableInfos : List <String >
156
166
): String {
157
167
val templateRender = TemplateRender (" genius/sql" )
158
- val template = templateRender.getTemplate(" sql-gen-generate .vm" )
168
+ val template = templateRender.getTemplate(" sql-gen-design .vm" )
159
169
160
170
dbContext.tableInfos = actions.getTableColumns(tableInfos)
161
171
0 commit comments