Support for custom drivers

This commit is contained in:
jipengfei-jpf
2023-06-23 18:25:41 +08:00
parent e4466fb34d
commit 5047569358
96 changed files with 2604 additions and 2 deletions

View File

@ -0,0 +1,45 @@
package ai.chat2db.plugin.dm;
import ai.chat2db.spi.DBManage;
public class DMDBManage 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) {
}
}

View File

@ -0,0 +1,27 @@
package ai.chat2db.plugin.dm;
import ai.chat2db.spi.MetaData;
import ai.chat2db.spi.jdbc.DefaultMetaService;
import ai.chat2db.spi.sql.SQLExecutor;
import ai.chat2db.spi.util.SqlUtils;
import java.sql.SQLException;
public class DMMetaData extends DefaultMetaService implements MetaData {
public String tableDDL(String databaseName, String schemaName, String tableName) {
String selectObjectDDLSQL = String.format(
"select dbms_metadata.get_ddl(%s, %s, %s) AS \"sql\" from dual",
SqlUtils.formatSQLString("TABLE"), SqlUtils.formatSQLString(tableName),
SqlUtils.formatSQLString(schemaName));
return SQLExecutor.getInstance().executeSql(selectObjectDDLSQL, resultSet -> {
try {
if (resultSet.next()) {
return resultSet.getString("sql");
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
return null;
});
}
}

View File

@ -0,0 +1,24 @@
package ai.chat2db.plugin.dm;
import ai.chat2db.plugin.dm.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 DMPlugin implements Plugin {
@Override
public DBConfig getDBConfig() {
return DBConfigBuilder.buildDBConfig();
}
@Override
public MetaData getMetaData() {
return new DMMetaData();
}
@Override
public DBManage getDBManage() {
return new DMDBManage();
}
}

View File

@ -0,0 +1,24 @@
package ai.chat2db.plugin.dm.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("DM");
dbConfig.setDbType("DM");
DriverConfig driverConfig = new DriverConfig();
driverConfig.setJdbcDriver("DmJdbcDriver18-8.1.2.141.jar");
driverConfig.setJdbcDriverClass("dm.jdbc.driver.DmDriver");
driverConfig.setDownloadJdbcDriverUrls(Lists.newArrayList("https://oss-chat2db.alibaba.com/lib/DmJdbcDriver18-8.1.2.141.jar"));
driverConfig.setName(driverConfig.getJdbcDriver() + ":" + driverConfig.getJdbcDriverClass());
dbConfig.setDefaultDriverConfig(driverConfig);
dbConfig.setDriverConfigList(Lists.newArrayList(driverConfig));
return dbConfig;
}
}

View File

@ -0,0 +1 @@
ai.chat2db.plugin.dm.DMPlugin