mirror of
https://github.com/CodePhiliaX/Chat2DB.git
synced 2025-08-01 08:52:11 +08:00
support view trigger producer function
This commit is contained in:
@ -1,7 +1,6 @@
|
||||
package ai.chat2db.plugin.mysql;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@ -20,13 +19,9 @@ public class MysqlMetaData extends DefaultMetaService implements MetaData {
|
||||
@NotEmpty String tableName) {
|
||||
String sql = "SHOW CREATE TABLE " + format(databaseName) + "."
|
||||
+ format(tableName);
|
||||
return SQLExecutor.getInstance().executeSql(connection, sql, resultSet -> {
|
||||
try {
|
||||
if (resultSet.next()) {
|
||||
return resultSet.getString("Create Table");
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException(e);
|
||||
return SQLExecutor.getInstance().execute(connection, sql, resultSet -> {
|
||||
if (resultSet.next()) {
|
||||
return resultSet.getString("Create Table");
|
||||
}
|
||||
return null;
|
||||
});
|
||||
@ -37,127 +32,105 @@ public class MysqlMetaData extends DefaultMetaService implements MetaData {
|
||||
}
|
||||
|
||||
private static String ROUTINES_SQL
|
||||
= "SELECT SPECIFIC_NAME, ROUTINE_COMMENT, ROUTINE_DEFINITION FROM information_schema.routines WHERE routine_type = '%s' AND ROUTINE_SCHEMA ='%s' AND "
|
||||
+ "routine_name = '%s';";
|
||||
=
|
||||
"SELECT SPECIFIC_NAME, ROUTINE_COMMENT, ROUTINE_DEFINITION FROM information_schema.routines WHERE "
|
||||
+ "routine_type = '%s' AND ROUTINE_SCHEMA ='%s' AND "
|
||||
+ "routine_name = '%s';";
|
||||
|
||||
@Override
|
||||
public Function function(Connection connection, @NotEmpty String databaseName, String schemaName,
|
||||
String functionName) {
|
||||
|
||||
String sql = String.format(ROUTINES_SQL,"FUNCTION", databaseName, functionName);
|
||||
return SQLExecutor.getInstance().executeSql(connection, sql, resultSet -> {
|
||||
try {
|
||||
if (resultSet.next()) {
|
||||
Function function = new Function();
|
||||
function.setDatabaseName(databaseName);
|
||||
function.setSchemaName(schemaName);
|
||||
function.setSpecificName(resultSet.getString("SPECIFIC_NAME"));
|
||||
function.setRemarks(resultSet.getString("ROUTINE_COMMENT"));
|
||||
function.setFunctionName(functionName);
|
||||
function.setFunctionBody(resultSet.getString("ROUTINE_DEFINITION"));
|
||||
return function;
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException(e);
|
||||
String sql = String.format(ROUTINES_SQL, "FUNCTION", databaseName, functionName);
|
||||
return SQLExecutor.getInstance().execute(connection, sql, resultSet -> {
|
||||
Function function = new Function();
|
||||
function.setDatabaseName(databaseName);
|
||||
function.setSchemaName(schemaName);
|
||||
function.setFunctionName(functionName);
|
||||
if (resultSet.next()) {
|
||||
function.setSpecificName(resultSet.getString("SPECIFIC_NAME"));
|
||||
function.setRemarks(resultSet.getString("ROUTINE_COMMENT"));
|
||||
function.setFunctionBody(resultSet.getString("ROUTINE_DEFINITION"));
|
||||
}
|
||||
return null;
|
||||
return function;
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
private static String TRIGGER_SQL
|
||||
= "SELECT TRIGGER_NAME,EVENT_MANIPULATION, ACTION_STATEMENT FROM INFORMATION_SCHEMA.TRIGGERS where TRIGGER_SCHEMA = '%s' AND TRIGGER_NAME = '%s';";
|
||||
= "SELECT TRIGGER_NAME,EVENT_MANIPULATION, ACTION_STATEMENT FROM INFORMATION_SCHEMA.TRIGGERS where "
|
||||
+ "TRIGGER_SCHEMA = '%s' AND TRIGGER_NAME = '%s';";
|
||||
|
||||
private static String TRIGGER_SQL_LIST
|
||||
= "SELECT TRIGGER_NAME FROM INFORMATION_SCHEMA.TRIGGERS where TRIGGER_SCHEMA = '%s';";
|
||||
|
||||
|
||||
@Override
|
||||
public List<Trigger> triggers(Connection connection,String databaseName, String schemaName) {
|
||||
public List<Trigger> triggers(Connection connection, String databaseName, String schemaName) {
|
||||
List<Trigger> triggers = new ArrayList<>();
|
||||
String sql = String.format(TRIGGER_SQL_LIST, databaseName);
|
||||
return SQLExecutor.getInstance().executeSql(connection, sql, resultSet -> {
|
||||
try {
|
||||
while (resultSet.next()) {
|
||||
Trigger trigger = new Trigger();
|
||||
trigger.setTriggerName(resultSet.getString("TRIGGER_NAME"));
|
||||
trigger.setSchemaName(schemaName);
|
||||
trigger.setDatabaseName(databaseName);
|
||||
triggers.add(trigger);
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException(e);
|
||||
return SQLExecutor.getInstance().execute(connection, sql, resultSet -> {
|
||||
while (resultSet.next()) {
|
||||
Trigger trigger = new Trigger();
|
||||
trigger.setTriggerName(resultSet.getString("TRIGGER_NAME"));
|
||||
trigger.setSchemaName(schemaName);
|
||||
trigger.setDatabaseName(databaseName);
|
||||
triggers.add(trigger);
|
||||
}
|
||||
return triggers;
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Trigger trigger(Connection connection, @NotEmpty String databaseName, String schemaName,
|
||||
String triggerName) {
|
||||
|
||||
String sql = String.format(TRIGGER_SQL, databaseName, triggerName);
|
||||
return SQLExecutor.getInstance().executeSql(connection, sql, resultSet -> {
|
||||
try {
|
||||
if (resultSet.next()) {
|
||||
Trigger trigger = new Trigger();
|
||||
trigger.setDatabaseName(databaseName);
|
||||
trigger.setSchemaName(schemaName);
|
||||
trigger.setTriggerName(triggerName);
|
||||
trigger.setTriggerBody(resultSet.getString("ACTION_STATEMENT"));
|
||||
return trigger;
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException(e);
|
||||
return SQLExecutor.getInstance().execute(connection, sql, resultSet -> {
|
||||
Trigger trigger = new Trigger();
|
||||
trigger.setDatabaseName(databaseName);
|
||||
trigger.setSchemaName(schemaName);
|
||||
trigger.setTriggerName(triggerName);
|
||||
if (resultSet.next()) {
|
||||
trigger.setTriggerBody(resultSet.getString("ACTION_STATEMENT"));
|
||||
}
|
||||
return null;
|
||||
return trigger;
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public Procedure procedure(Connection connection, @NotEmpty String databaseName, String schemaName,
|
||||
String procedureName) {
|
||||
String sql = String.format(ROUTINES_SQL,"PROCEDURE", databaseName, procedureName);
|
||||
return SQLExecutor.getInstance().executeSql(connection, sql, resultSet -> {
|
||||
try {
|
||||
if (resultSet.next()) {
|
||||
Procedure procedure = new Procedure();
|
||||
procedure.setDatabaseName(databaseName);
|
||||
procedure.setSchemaName(schemaName);
|
||||
procedure.setSpecificName(resultSet.getString("SPECIFIC_NAME"));
|
||||
procedure.setRemarks(resultSet.getString("ROUTINE_COMMENT"));
|
||||
procedure.setProcedureName(procedureName);
|
||||
procedure.setProcedureBody(resultSet.getString("ROUTINE_DEFINITION"));
|
||||
return procedure;
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException(e);
|
||||
String sql = String.format(ROUTINES_SQL, "PROCEDURE", databaseName, procedureName);
|
||||
return SQLExecutor.getInstance().execute(connection, sql, resultSet -> {
|
||||
Procedure procedure = new Procedure();
|
||||
procedure.setDatabaseName(databaseName);
|
||||
procedure.setSchemaName(schemaName);
|
||||
procedure.setProcedureName(procedureName);
|
||||
if (resultSet.next()) {
|
||||
procedure.setSpecificName(resultSet.getString("SPECIFIC_NAME"));
|
||||
procedure.setRemarks(resultSet.getString("ROUTINE_COMMENT"));
|
||||
procedure.setProcedureBody(resultSet.getString("ROUTINE_DEFINITION"));
|
||||
}
|
||||
return null;
|
||||
return procedure;
|
||||
});
|
||||
}
|
||||
|
||||
private static String VIEW_SQL
|
||||
= "SELECT TABLE_SCHEMA AS DatabaseName, TABLE_NAME AS ViewName, VIEW_DEFINITION AS definition, CHECK_OPTION, IS_UPDATABLE FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = '%s' AND TABLE_NAME = '%s';";
|
||||
= "SELECT TABLE_SCHEMA AS DatabaseName, TABLE_NAME AS ViewName, VIEW_DEFINITION AS definition, CHECK_OPTION, "
|
||||
+ "IS_UPDATABLE FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = '%s' AND TABLE_NAME = '%s';";
|
||||
|
||||
@Override
|
||||
public Table view(Connection connection, String databaseName, String schemaName, String viewName) {
|
||||
String sql = String.format(VIEW_SQL, databaseName, viewName);
|
||||
return SQLExecutor.getInstance().executeSql(connection, sql, resultSet -> {
|
||||
try {
|
||||
if (resultSet.next()) {
|
||||
Table table = new Table();
|
||||
table.setDatabaseName(databaseName);
|
||||
table.setSchemaName(schemaName);
|
||||
table.setName(viewName);
|
||||
table.setDdl(resultSet.getString("definition"));
|
||||
return table;
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException(e);
|
||||
return SQLExecutor.getInstance().execute(connection, sql, resultSet -> {
|
||||
Table table = new Table();
|
||||
table.setDatabaseName(databaseName);
|
||||
table.setSchemaName(schemaName);
|
||||
table.setName(viewName);
|
||||
if (resultSet.next()) {
|
||||
table.setDdl(resultSet.getString("definition"));
|
||||
}
|
||||
return null;
|
||||
return table;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user