Delete operations of functions

This commit is contained in:
suyue
2024-08-03 14:39:09 +08:00
parent 052a36b73e
commit 89e2eb30de
11 changed files with 173 additions and 13 deletions

View File

@ -3,6 +3,7 @@ package ai.chat2db.plugin.mysql;
import ai.chat2db.spi.DBManage;
import ai.chat2db.spi.jdbc.DefaultDBManage;
import ai.chat2db.spi.model.AsyncContext;
import ai.chat2db.spi.model.Function;
import ai.chat2db.spi.model.Procedure;
import ai.chat2db.spi.sql.SQLExecutor;
import cn.hutool.core.date.DateUtil;
@ -223,6 +224,13 @@ public class MysqlDBManage extends DefaultDBManage implements DBManage {
SQLExecutor.getInstance().execute(connection, sql, resultSet -> null);
}
@Override
public void deleteFunction(Connection connection, String databaseName, String schemaName, Function function) {
String functionNewName = getSchemaOrFunctionName(function.getFunctionBody(), databaseName, function);
String sql = "DROP FUNCTION " + functionNewName;
SQLExecutor.getInstance().execute(connection, sql, resultSet -> null);
}
private static String getSchemaOrProcedureName(String procedureBody, String schemaName, Procedure procedure) {
if (procedureBody.toLowerCase().contains(schemaName.toLowerCase())) {
return procedure.getProcedureName();
@ -231,6 +239,14 @@ public class MysqlDBManage extends DefaultDBManage implements DBManage {
}
}
private static String getSchemaOrFunctionName(String functionBody, String schemaName, Function function) {
if (functionBody.toLowerCase().contains(schemaName.toLowerCase())) {
return function.getFunctionName();
} else {
return schemaName + "." + function.getFunctionName();
}
}
public static String format(String tableName) {
return "`" + tableName + "`";
}