mirror of
https://github.com/CodePhiliaX/Chat2DB.git
synced 2025-07-28 10:12:39 +08:00
fix sqlite triggers query and trigger ddl query
This commit is contained in:
@ -1,11 +1,5 @@
|
||||
package ai.chat2db.plugin.sqlite;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.SQLException;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import ai.chat2db.plugin.sqlite.builder.SqliteBuilder;
|
||||
import ai.chat2db.plugin.sqlite.type.SqliteCollationEnum;
|
||||
import ai.chat2db.plugin.sqlite.type.SqliteColumnTypeEnum;
|
||||
@ -17,15 +11,57 @@ import ai.chat2db.spi.jdbc.DefaultMetaService;
|
||||
import ai.chat2db.spi.model.Database;
|
||||
import ai.chat2db.spi.model.Schema;
|
||||
import ai.chat2db.spi.model.TableMeta;
|
||||
import ai.chat2db.spi.model.Trigger;
|
||||
import ai.chat2db.spi.sql.SQLExecutor;
|
||||
import com.google.common.collect.Lists;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class SqliteMetaData extends DefaultMetaService implements MetaData {
|
||||
|
||||
|
||||
public static final String TRIGGER_LIST_SQL = "SELECT * FROM sqlite_master WHERE type = 'trigger';";
|
||||
public static String TRIGGER_DDL_SQL = "SELECT * FROM sqlite_master WHERE type = 'trigger' and name='%s';";
|
||||
|
||||
@Override
|
||||
public List<Trigger> triggers(Connection connection, String databaseName, String schemaName) {
|
||||
List<Trigger> triggers = new ArrayList<>();
|
||||
return SQLExecutor.getInstance().execute(connection, TRIGGER_LIST_SQL, resultSet -> {
|
||||
while (resultSet.next()) {
|
||||
Trigger trigger = new Trigger();
|
||||
String triggerName = resultSet.getString("name");
|
||||
trigger.setTriggerName(triggerName);
|
||||
trigger.setDatabaseName(databaseName);
|
||||
triggers.add(trigger);
|
||||
}
|
||||
return triggers;
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public Trigger trigger(Connection connection, String databaseName, String schemaName, String triggerName) {
|
||||
Trigger trigger = new Trigger();
|
||||
String sql = String.format(TRIGGER_DDL_SQL, triggerName);
|
||||
return SQLExecutor.getInstance().execute(connection, sql, resultSet -> {
|
||||
while (resultSet.next()) {
|
||||
trigger.setTriggerName(triggerName);
|
||||
trigger.setDatabaseName(databaseName);
|
||||
trigger.setTriggerBody(resultSet.getString("sql"));
|
||||
}
|
||||
return trigger;
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public String tableDDL(Connection connection, String databaseName, String schemaName, String tableName) {
|
||||
String sql = "SELECT sql FROM sqlite_master WHERE type='table' AND name='" + tableName + "'";
|
||||
return SQLExecutor.getInstance().execute(connection,sql, resultSet -> {
|
||||
return SQLExecutor.getInstance().execute(connection, sql, resultSet -> {
|
||||
try {
|
||||
if (resultSet.next()) {
|
||||
return resultSet.getString("sql");
|
||||
@ -36,13 +72,14 @@ public class SqliteMetaData extends DefaultMetaService implements MetaData {
|
||||
return null;
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Database> databases(Connection connection) {
|
||||
return Lists.newArrayList(Database.builder().name("main").build());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Schema> schemas(Connection connection,String databaseName) {
|
||||
public List<Schema> schemas(Connection connection, String databaseName) {
|
||||
return Lists.newArrayList();
|
||||
}
|
||||
|
||||
@ -50,6 +87,7 @@ public class SqliteMetaData extends DefaultMetaService implements MetaData {
|
||||
public SqlBuilder getSqlBuilder() {
|
||||
return new SqliteBuilder();
|
||||
}
|
||||
|
||||
@Override
|
||||
public TableMeta getTableMeta(String databaseName, String schemaName, String tableName) {
|
||||
return TableMeta.builder()
|
||||
|
Reference in New Issue
Block a user