mirror of
https://github.com/CodePhiliaX/Chat2DB.git
synced 2025-07-28 10:12:39 +08:00
Support for custom drivers
This commit is contained in:
19
chat2db-server/chat2db-plugins/chat2db-sqlite/pom.xml
Normal file
19
chat2db-server/chat2db-plugins/chat2db-sqlite/pom.xml
Normal file
@ -0,0 +1,19 @@
|
||||
<?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>
|
||||
<artifactId>chat2db-sqlite</artifactId>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>ai.chat2db</groupId>
|
||||
<artifactId>chat2db-spi</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
@ -0,0 +1,45 @@
|
||||
package ai.chat2db.plugin.sqlite;
|
||||
|
||||
import ai.chat2db.spi.DBManage;
|
||||
|
||||
public class SqliteDBManage 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,35 @@
|
||||
package ai.chat2db.plugin.sqlite;
|
||||
|
||||
import ai.chat2db.spi.MetaData;
|
||||
import ai.chat2db.spi.jdbc.DefaultMetaService;
|
||||
import ai.chat2db.spi.sql.SQLExecutor;
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.List;
|
||||
|
||||
public class SqliteMetaData extends DefaultMetaService implements MetaData {
|
||||
@Override
|
||||
public String tableDDL(String databaseName, String schemaName, String tableName) {
|
||||
String sql = "SELECT sql FROM sqlite_master WHERE type='table' AND name='" + tableName + "'";
|
||||
return SQLExecutor.getInstance().executeSql(sql, resultSet -> {
|
||||
try {
|
||||
if (resultSet.next()) {
|
||||
return resultSet.getString("sql");
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return null;
|
||||
});
|
||||
}
|
||||
@Override
|
||||
public List<String> databases() {
|
||||
return Lists.newArrayList("main");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> schemas(String databaseName) {
|
||||
return Lists.newArrayList();
|
||||
}
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
package ai.chat2db.plugin.sqlite;
|
||||
|
||||
import ai.chat2db.plugin.sqlite.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 SqlitePlugin implements Plugin {
|
||||
@Override
|
||||
public DBConfig getDBConfig() {
|
||||
return DBConfigBuilder.buildDBConfig();
|
||||
}
|
||||
|
||||
@Override
|
||||
public MetaData getMetaData() {
|
||||
return new SqliteMetaData();
|
||||
}
|
||||
|
||||
@Override
|
||||
public DBManage getDBManage() {
|
||||
return new SqliteDBManage();
|
||||
}
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
package ai.chat2db.plugin.sqlite.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("SQLite");
|
||||
dbConfig.setDbType("SQLITE");
|
||||
DriverConfig driverConfig = new DriverConfig();
|
||||
driverConfig.setJdbcDriver("sqlite-jdbc-3.39.3.0.jar");
|
||||
driverConfig.setJdbcDriverClass("org.sqlite.JDBC");
|
||||
driverConfig.setDownloadJdbcDriverUrls(Lists.newArrayList("https://oss-chat2db.alibaba.com/lib/sqlite-jdbc-3.39.3.0.jar"));
|
||||
driverConfig.setName(driverConfig.getJdbcDriver() + ":" + driverConfig.getJdbcDriverClass());
|
||||
dbConfig.setDefaultDriverConfig(driverConfig);
|
||||
dbConfig.setDriverConfigList(Lists.newArrayList(driverConfig));
|
||||
return dbConfig;
|
||||
}
|
||||
}
|
@ -0,0 +1 @@
|
||||
ai.chat2db.plugin.sqlite.SqlitePlugin
|
Reference in New Issue
Block a user