mirror of
https://github.com/CodePhiliaX/Chat2DB.git
synced 2025-07-29 18:53:12 +08:00
fix sqlite triggers query and trigger ddl query
This commit is contained in:
@ -1,11 +1,5 @@
|
|||||||
package ai.chat2db.plugin.sqlite;
|
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.builder.SqliteBuilder;
|
||||||
import ai.chat2db.plugin.sqlite.type.SqliteCollationEnum;
|
import ai.chat2db.plugin.sqlite.type.SqliteCollationEnum;
|
||||||
import ai.chat2db.plugin.sqlite.type.SqliteColumnTypeEnum;
|
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.Database;
|
||||||
import ai.chat2db.spi.model.Schema;
|
import ai.chat2db.spi.model.Schema;
|
||||||
import ai.chat2db.spi.model.TableMeta;
|
import ai.chat2db.spi.model.TableMeta;
|
||||||
|
import ai.chat2db.spi.model.Trigger;
|
||||||
import ai.chat2db.spi.sql.SQLExecutor;
|
import ai.chat2db.spi.sql.SQLExecutor;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
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 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
|
@Override
|
||||||
public String tableDDL(Connection connection, String databaseName, String schemaName, String tableName) {
|
public String tableDDL(Connection connection, String databaseName, String schemaName, String tableName) {
|
||||||
String sql = "SELECT sql FROM sqlite_master WHERE type='table' AND name='" + 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 {
|
try {
|
||||||
if (resultSet.next()) {
|
if (resultSet.next()) {
|
||||||
return resultSet.getString("sql");
|
return resultSet.getString("sql");
|
||||||
@ -36,13 +72,14 @@ public class SqliteMetaData extends DefaultMetaService implements MetaData {
|
|||||||
return null;
|
return null;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Database> databases(Connection connection) {
|
public List<Database> databases(Connection connection) {
|
||||||
return Lists.newArrayList(Database.builder().name("main").build());
|
return Lists.newArrayList(Database.builder().name("main").build());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Schema> schemas(Connection connection,String databaseName) {
|
public List<Schema> schemas(Connection connection, String databaseName) {
|
||||||
return Lists.newArrayList();
|
return Lists.newArrayList();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -50,6 +87,7 @@ public class SqliteMetaData extends DefaultMetaService implements MetaData {
|
|||||||
public SqlBuilder getSqlBuilder() {
|
public SqlBuilder getSqlBuilder() {
|
||||||
return new SqliteBuilder();
|
return new SqliteBuilder();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TableMeta getTableMeta(String databaseName, String schemaName, String tableName) {
|
public TableMeta getTableMeta(String databaseName, String schemaName, String tableName) {
|
||||||
return TableMeta.builder()
|
return TableMeta.builder()
|
||||||
|
Reference in New Issue
Block a user