mirror of
https://github.com/CodePhiliaX/Chat2DB.git
synced 2025-07-30 11:12:55 +08:00
Support for custom drivers
This commit is contained in:
21
chat2db-server/chat2db-plugins/chat2db-redis/pom.xml
Normal file
21
chat2db-server/chat2db-plugins/chat2db-redis/pom.xml
Normal file
@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>ai.chat2db</groupId>
|
||||
<artifactId>chat2db-plugins</artifactId>
|
||||
<version>${revision}</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>ai.chat2db</groupId>
|
||||
<artifactId>chat2db-spi</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<artifactId>chat2db-redis</artifactId>
|
||||
|
||||
</project>
|
@ -0,0 +1,45 @@
|
||||
package ai.chat2db.plugin.redis;
|
||||
|
||||
import ai.chat2db.spi.DBManage;
|
||||
|
||||
public class RedisDBManage implements DBManage {
|
||||
@Override
|
||||
public void connectDatabase(String database) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void modifyDatabase(String databaseName, String newDatabaseName) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createDatabase(String databaseName) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dropDatabase(String databaseName) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createSchema(String databaseName, String schemaName) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dropSchema(String databaseName, String schemaName) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void modifySchema(String databaseName, String schemaName, String newSchemaName) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dropTable(String databaseName, String schemaName, String tableName) {
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,60 @@
|
||||
package ai.chat2db.plugin.redis;
|
||||
|
||||
import ai.chat2db.spi.MetaData;
|
||||
import ai.chat2db.spi.jdbc.DefaultMetaService;
|
||||
import ai.chat2db.spi.model.Table;
|
||||
import ai.chat2db.spi.sql.SQLExecutor;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class RedisMetaData extends DefaultMetaService implements MetaData {
|
||||
@Override
|
||||
public String tableDDL(@NotEmpty String databaseName, String schemaName, @NotEmpty String tableName) {
|
||||
return "";
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<String> databases() {
|
||||
List<String> databases = new ArrayList<>();
|
||||
return SQLExecutor.getInstance().executeSql("config get databases", resultSet -> {
|
||||
try {
|
||||
if (resultSet.next()) {
|
||||
Object count = resultSet.getObject(2);
|
||||
if(StringUtils.isNotBlank(count.toString())) {
|
||||
for (int i = 0; i < Integer.parseInt(count.toString()); i++) {
|
||||
databases.add(String.valueOf(i));
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return databases;
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Table> tables(String databaseName, String schemaName, String tableName) {
|
||||
return SQLExecutor.getInstance().executeSql("scan 0 MATCH * COUNT 1000", resultSet -> {
|
||||
List<Table> tables = new ArrayList<>();
|
||||
try {
|
||||
while (resultSet.next()) {
|
||||
ArrayList list = (ArrayList)resultSet.getObject(2);
|
||||
for (Object object : list) {
|
||||
Table table = new Table();
|
||||
table.setName(object.toString());
|
||||
tables.add(table);
|
||||
}
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return tables;
|
||||
});
|
||||
}
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
package ai.chat2db.plugin.redis;
|
||||
|
||||
|
||||
import ai.chat2db.plugin.redis.builder.DBConfigBuilder;
|
||||
import ai.chat2db.spi.DBManage;
|
||||
import ai.chat2db.spi.MetaData;
|
||||
import ai.chat2db.spi.Plugin;
|
||||
import ai.chat2db.spi.config.DBConfig;
|
||||
|
||||
public class RedisPlugin implements Plugin {
|
||||
|
||||
@Override
|
||||
public DBConfig getDBConfig() {
|
||||
return DBConfigBuilder.buildDBConfig();
|
||||
}
|
||||
|
||||
@Override
|
||||
public MetaData getMetaData() {
|
||||
return new RedisMetaData();
|
||||
}
|
||||
|
||||
@Override
|
||||
public DBManage getDBManage() {
|
||||
return new RedisDBManage();
|
||||
}
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
package ai.chat2db.plugin.redis.builder;
|
||||
|
||||
import ai.chat2db.spi.config.DBConfig;
|
||||
import ai.chat2db.spi.config.DriverConfig;
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
public class DBConfigBuilder {
|
||||
public static DBConfig buildDBConfig() {
|
||||
DBConfig dbConfig = new DBConfig();
|
||||
dbConfig.setName("Redis");
|
||||
dbConfig.setDbType("REDIS");
|
||||
DriverConfig driverConfig = new DriverConfig();
|
||||
driverConfig.setJdbcDriver("sredis-jdbc-driver-1.3.jar");
|
||||
driverConfig.setJdbcDriverClass("jdbc.RedisDriver");
|
||||
driverConfig.setDownloadJdbcDriverUrls(Lists.newArrayList("https://oss-chat2db.alibaba.com/lib/redis-jdbc-driver-1.3.jar"));
|
||||
driverConfig.setName(driverConfig.getJdbcDriver() + ":" + driverConfig.getJdbcDriverClass());
|
||||
dbConfig.setDefaultDriverConfig(driverConfig);
|
||||
dbConfig.setDriverConfigList(Lists.newArrayList(driverConfig));
|
||||
return dbConfig;
|
||||
}
|
||||
}
|
@ -0,0 +1 @@
|
||||
ai.chat2db.plugin.redis.RedisPlugin
|
Reference in New Issue
Block a user