Skip to content

Commit 12b768b

Browse files
committed
feat(devins-lang): add support for parsing and verifying SQL scripts before inserting them into the editor.
1 parent e2e8e1f commit 12b768b

File tree

2 files changed

+13
-4
lines changed

2 files changed

+13
-4
lines changed

exts/database/src/main/kotlin/cc/unitmesh/database/flow/AutoSqlBackgroundTask.kt

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import com.intellij.openapi.editor.Editor
88
import com.intellij.openapi.progress.ProgressIndicator
99
import com.intellij.openapi.progress.Task
1010
import com.intellij.openapi.project.Project
11+
import com.intellij.psi.PsiFileFactory
12+
import com.intellij.sql.psi.SqlLanguage
1113

1214
class AutoSqlBackgroundTask(
1315
private val project: Project,
@@ -39,10 +41,17 @@ class AutoSqlBackgroundTask(
3941
val sqlScript = flow.design(tableNames)[0]
4042

4143
logger.info("SQL Script: $sqlScript")
44+
// verify sql script with parser
45+
try {
46+
val sqlDefine =
47+
PsiFileFactory.getInstance(project).createFileFromText("temp.sql", SqlLanguage.INSTANCE, sqlScript)
48+
// if there is no error, we can insert the code to editor
49+
} catch (e: Exception) {
50+
logger.error("SQL Script parse error: $e")
51+
}
52+
4253
WriteCommandAction.runWriteCommandAction(project, "Gen SQL", "cc.unitmesh.livingDoc", {
43-
// new line
4454
editor.document.insertString(editor.caretModel.offset, "\n")
45-
// insert sql script
4655
val code = parseCodeFromString(sqlScript).first()
4756
editor.document.insertString(editor.caretModel.offset + "\n".length, code)
4857
})

exts/database/src/main/kotlin/cc/unitmesh/database/flow/AutoSqlFlow.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ class AutoSqlFlow(
5151

5252
val prompter = templateRender.renderTemplate(template)
5353

54-
logger.info("Prompt: $prompter")
54+
logger.info("AutoSQL step 1 flow: $prompter")
5555
return prompter
5656
}
5757

@@ -70,7 +70,7 @@ class AutoSqlFlow(
7070

7171
val prompter = templateRender.renderTemplate(template)
7272

73-
logger.info("Prompt: $prompter")
73+
logger.info("AutoSQL step 2 flow: $prompter")
7474
return prompter
7575
}
7676

0 commit comments

Comments
 (0)