|
1 | 1 | package cc.unitmesh.database.provider
|
2 | 2 |
|
3 |
| -import cc.unitmesh.database.provider.DatabaseFunction.values |
4 | 3 | import cc.unitmesh.database.util.DatabaseSchemaAssistant
|
5 | 4 | import cc.unitmesh.database.util.DatabaseSchemaAssistant.getTableColumn
|
6 | 5 | import cc.unitmesh.devti.provider.toolchain.ToolchainFunctionProvider
|
7 | 6 | import com.intellij.database.model.DasTable
|
8 | 7 | import com.intellij.database.model.RawDataSource
|
9 | 8 | import com.intellij.database.util.DasUtil
|
| 9 | +import com.intellij.database.util.DbUtil |
10 | 10 | import com.intellij.openapi.diagnostic.logger
|
11 | 11 | import com.intellij.openapi.project.Project
|
12 | 12 |
|
@@ -47,11 +47,19 @@ class DatabaseFunctionProvider : ToolchainFunctionProvider {
|
47 | 47 | }
|
48 | 48 |
|
49 | 49 | private fun listSchemas(args: List<Any>, project: Project): Any {
|
50 |
| - return DatabaseSchemaAssistant.allRawDatasource(project).map { |
51 |
| - DasUtil.getTables(it).toList().map<DasTable, String> { |
| 50 | + val dataSources = DbUtil.getDataSources(project) |
| 51 | + if (dataSources.isEmpty) return "" |
| 52 | + |
| 53 | + return dataSources.mapNotNull { |
| 54 | + val tableSchema = DasUtil.getTables(it).toList().mapNotNull<DasTable, String> { |
| 55 | + if (it.dasParent?.name == "information_schema") return@mapNotNull null |
52 | 56 | getTableColumn(it)
|
53 | 57 | }
|
54 |
| - }.flatten() |
| 58 | + |
| 59 | + if (tableSchema.isEmpty()) return@mapNotNull null |
| 60 | + val name = it.name.substringBeforeLast('@') |
| 61 | + "DATABASE NAME: ${name};\n${tableSchema.joinToString("\n")}" |
| 62 | + }.joinToString("\n") |
55 | 63 | }
|
56 | 64 |
|
57 | 65 | private fun executeTableFunction(args: List<Any>, project: Project): Any {
|
@@ -98,6 +106,7 @@ class DatabaseFunctionProvider : ToolchainFunctionProvider {
|
98 | 106 | val sqlQuery = args.first()
|
99 | 107 | return DatabaseSchemaAssistant.executeSqlQuery(project, sqlQuery as String)
|
100 | 108 | }
|
| 109 | + |
101 | 110 | private fun executeColumnFunction(args: List<Any>, project: Project): Any {
|
102 | 111 | if (args.isEmpty()) {
|
103 | 112 | val allTables = DatabaseSchemaAssistant.getAllTables(project)
|
|
0 commit comments