Skip to content

Commit 6bbed83

Browse files
committed
feat(toolchain): add funcNames method to ToolchainFunctionProvider
#308 Implement the `funcNames` method across all `ToolchainFunctionProvider` implementations. This method returns a list of supported function names for each provider. Additionally, refactor database-related functions into a separate `DatabaseFunction` enum for better organization.
1 parent 97bfac8 commit 6bbed83

File tree

10 files changed

+45
-21
lines changed

10 files changed

+45
-21
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package cc.unitmesh.devti.bridge
2+
3+
enum class DatabaseFunction(val funName: String) {
4+
Schema("schema"),
5+
Table("table"),
6+
Column("column"),
7+
Query("query")
8+
;
9+
10+
companion object {
11+
fun fromString(value: String): DatabaseFunction? {
12+
return values().firstOrNull { it.funName == value }
13+
}
14+
15+
fun allFuncNames(): List<String> = values().map { it.funName }
16+
}
17+
}

core/src/main/kotlin/cc/unitmesh/devti/bridge/archview/ComponentViewFunctionProvider.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import cc.unitmesh.devti.provider.toolchain.ToolchainFunctionProvider
77
import com.intellij.openapi.project.Project
88

99
class ComponentViewFunctionProvider : ToolchainFunctionProvider {
10+
override fun funcNames(): List<String> = listOf(ArchViewCommand.ComponentView.name)
11+
1012
override fun isApplicable(project: Project, funcName: String) = funcName == ArchViewCommand.ComponentView.name
1113

1214
override fun execute(

core/src/main/kotlin/cc/unitmesh/devti/bridge/archview/ContainerViewFunctionProvider.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import com.intellij.openapi.project.Project
88
class ContainerViewFunctionProvider : ToolchainFunctionProvider {
99
override fun isApplicable(project: Project, funcName: String) = funcName == ArchViewCommand.ContainerView.name
1010

11+
override fun funcNames(): List<String> = listOf(ArchViewCommand.ContainerView.name)
12+
1113
override fun execute(
1214
project: Project,
1315
prop: String,

core/src/main/kotlin/cc/unitmesh/devti/bridge/assessment/SccFunctionProvider.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import com.intellij.openapi.project.guessProjectDir
1010
class SccFunctionProvider : ToolchainFunctionProvider {
1111
override fun isApplicable(project: Project, funcName: String): Boolean = funcName == Assessment.SCC.name
1212

13+
override fun funcNames(): List<String> = listOf(Assessment.SCC.name)
14+
1315
override fun execute(
1416
project: Project,
1517
prop: String,

core/src/main/kotlin/cc/unitmesh/devti/bridge/knowledge/HistoryFunctionProvider.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package cc.unitmesh.devti.bridge.knowledge
22

3-
import cc.unitmesh.devti.bridge.Assessment
43
import cc.unitmesh.devti.bridge.KnowledgeTransfer
54
import cc.unitmesh.devti.provider.RevisionProvider
65
import cc.unitmesh.devti.provider.toolchain.ToolchainFunctionProvider
@@ -12,6 +11,8 @@ import com.intellij.openapi.vfs.VirtualFileManager
1211
class HistoryFunctionProvider : ToolchainFunctionProvider {
1312
override fun isApplicable(project: Project, funcName: String): Boolean = funcName == KnowledgeTransfer.History.name
1413

14+
override fun funcNames(): List<String> = listOf(KnowledgeTransfer.History.name)
15+
1516
override fun execute(
1617
project: Project,
1718
prop: String,

core/src/main/kotlin/cc/unitmesh/devti/devin/dataprovider/BuiltinCommand.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,10 @@ enum class BuiltinCommand(
125125

126126
fun example(command: BuiltinCommand): String {
127127
val commandName = command.commandName
128+
return example(commandName)
129+
}
130+
131+
fun example(commandName: String): String {
128132
val inputStream = BuiltinCommand::class.java.getResourceAsStream("/agent/toolExamples/$commandName.devin")
129133
?: throw IllegalStateException("Example file not found: $commandName.devin")
130134

core/src/main/kotlin/cc/unitmesh/devti/provider/toolchain/ToolchainFunctionProvider.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import com.intellij.openapi.extensions.ExtensionPointName
44
import com.intellij.openapi.project.Project
55

66
interface ToolchainFunctionProvider {
7+
fun funcNames(): List<String>
8+
79
fun isApplicable(project: Project, funcName: String): Boolean
810

911
fun execute(project: Project, prop: String, args: List<Any>, allVariables: Map<String, Any?>): Any

exts/ext-database/src/main/kotlin/cc/unitmesh/database/provider/DatabaseFunctionProvider.kt

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package cc.unitmesh.database.provider
22

33
import cc.unitmesh.database.util.DatabaseSchemaAssistant
44
import cc.unitmesh.database.util.DatabaseSchemaAssistant.getTableColumn
5+
import cc.unitmesh.devti.bridge.DatabaseFunction
56
import cc.unitmesh.devti.provider.toolchain.ToolchainFunctionProvider
67
import com.intellij.database.model.DasTable
78
import com.intellij.database.model.RawDataSource
@@ -10,25 +11,13 @@ import com.intellij.database.util.DbUtil
1011
import com.intellij.openapi.diagnostic.logger
1112
import com.intellij.openapi.project.Project
1213

13-
enum class DatabaseFunction(val funName: String) {
14-
Schema("schema"),
15-
Table("table"),
16-
Column("column"),
17-
Query("query")
18-
;
19-
20-
companion object {
21-
fun fromString(value: String): DatabaseFunction? {
22-
return values().firstOrNull { it.funName == value }
23-
}
24-
}
25-
}
26-
2714
class DatabaseFunctionProvider : ToolchainFunctionProvider {
2815
override fun isApplicable(project: Project, funcName: String): Boolean {
2916
return DatabaseFunction.values().any { it.funName == funcName }
3017
}
3118

19+
override fun funcNames(): List<String> = DatabaseFunction.allFuncNames()
20+
3221
override fun execute(
3322
project: Project,
3423
prop: String,
@@ -130,7 +119,7 @@ class DatabaseFunctionProvider : ToolchainFunctionProvider {
130119
}
131120

132121
is DasTable -> {
133-
return DatabaseSchemaAssistant.getTableColumn(first)
122+
return getTableColumn(first)
134123
}
135124

136125
is List<*> -> {
@@ -143,7 +132,7 @@ class DatabaseFunctionProvider : ToolchainFunctionProvider {
143132

144133
is DasTable -> {
145134
return first.map {
146-
DatabaseSchemaAssistant.getTableColumn(it as DasTable)
135+
getTableColumn(it as DasTable)
147136
}
148137
}
149138

@@ -163,7 +152,7 @@ class DatabaseFunctionProvider : ToolchainFunctionProvider {
163152
}
164153

165154
dasTable?.let {
166-
DatabaseSchemaAssistant.getTableColumn(it)
155+
getTableColumn(it)
167156
}
168157
}
169158
} else {
@@ -172,7 +161,7 @@ class DatabaseFunctionProvider : ToolchainFunctionProvider {
172161
}
173162

174163
return dasTable?.let {
175-
DatabaseSchemaAssistant.getTableColumn(it)
164+
getTableColumn(it)
176165
} ?: "ShireError[DBTool]: Table not found"
177166
}
178167
}
@@ -189,4 +178,4 @@ class DatabaseFunctionProvider : ToolchainFunctionProvider {
189178
?: return emptyList()
190179
return DatabaseSchemaAssistant.getTableByDataSource(database)
191180
}
192-
}
181+
}

exts/ext-dependencies/src/233/main/kotlin/cc/unitmesh/dependencies/DependenciesFunctionProvider.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
package cc.unitmesh.dependencies
22

3+
import cc.unitmesh.devti.bridge.Assessment
34
import cc.unitmesh.devti.provider.toolchain.ToolchainFunctionProvider
45
import com.intellij.openapi.module.ModuleManager
56
import com.intellij.openapi.project.Project
67
import com.intellij.packageChecker.model.ProjectDependenciesModel
78

89
class DependenciesFunctionProvider : ToolchainFunctionProvider {
9-
override fun isApplicable(project: Project, funcName: String) = funcName == "dependencies"
10+
override fun isApplicable(project: Project, funcName: String) = funcName == Assessment.Dependencies.name
11+
12+
override fun funcNames(): List<String> = listOf(Assessment.Dependencies.name)
1013

1114
override fun execute(
1215
project: Project,

javascript/src/main/kotlin/cc/unitmesh/ide/javascript/bridge/StylingViewFunctionProvider.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ import com.intellij.psi.search.ProjectScope
1616
class StylingViewFunctionProvider : ToolchainFunctionProvider {
1717
override fun isApplicable(project: Project, funcName: String) = funcName == ArchViewCommand.StylingView.name
1818

19+
override fun funcNames(): List<String> = listOf(ArchViewCommand.StylingView.name)
20+
1921
override fun execute(
2022
project: Project,
2123
prop: String,

0 commit comments

Comments
 (0)