Support for creating database and schema

This commit is contained in:
SwallowGG
2023-10-23 15:33:26 +08:00
parent 0df93d771c
commit 61b2ea14a1
23 changed files with 340 additions and 178 deletions

View File

@ -6,7 +6,7 @@ import java.util.Collections;
import java.util.List;
import java.util.concurrent.CountDownLatch;
import ai.chat2db.server.domain.api.param.datasource.DatabaseOperationParam;
import ai.chat2db.server.domain.api.param.datasource.DatabaseCreateParam;
import ai.chat2db.server.domain.api.param.datasource.DatabaseQueryAllParam;
import ai.chat2db.server.domain.api.param.MetaDataQueryParam;
import ai.chat2db.server.domain.api.param.SchemaOperationParam;
@ -17,9 +17,11 @@ import ai.chat2db.server.tools.base.wrapper.result.ActionResult;
import ai.chat2db.server.tools.base.wrapper.result.DataResult;
import ai.chat2db.server.tools.base.wrapper.result.ListResult;
import ai.chat2db.spi.MetaData;
import ai.chat2db.spi.SqlBuilder;
import ai.chat2db.spi.model.Database;
import ai.chat2db.spi.model.MetaSchema;
import ai.chat2db.spi.model.Schema;
import ai.chat2db.spi.model.Sql;
import ai.chat2db.spi.sql.Chat2DBContext;
import cn.hutool.core.thread.ThreadUtil;
import lombok.extern.slf4j.Slf4j;
@ -69,12 +71,12 @@ public class DatabaseServiceImpl implements DatabaseService {
private List<Schema> getSchemaList(String databaseName, Connection connection) {
MetaData metaData = Chat2DBContext.getMetaData();
List<Schema> schemas = metaData.schemas(connection,databaseName);
sortSchema(schemas,connection);
List<Schema> schemas = metaData.schemas(connection, databaseName);
sortSchema(schemas, connection);
return schemas;
}
private void sortSchema(List<Schema> schemas,Connection connection) {
private void sortSchema(List<Schema> schemas, Connection connection) {
if (CollectionUtils.isEmpty(schemas)) {
return;
}
@ -135,21 +137,21 @@ public class DatabaseServiceImpl implements DatabaseService {
}
@Override
public ActionResult deleteDatabase(DatabaseOperationParam param) {
Chat2DBContext.getDBManage().dropDatabase(Chat2DBContext.getConnection(), param.getDatabaseName());
public ActionResult deleteDatabase(DatabaseCreateParam param) {
Chat2DBContext.getDBManage().dropDatabase(Chat2DBContext.getConnection(), param.getName());
return ActionResult.isSuccess();
}
@Override
public ActionResult createDatabase(DatabaseOperationParam param) {
Chat2DBContext.getDBManage().createDatabase(Chat2DBContext.getConnection(), param.getDatabaseName());
return ActionResult.isSuccess();
public DataResult<Sql> createDatabase(Database database) {
String sql = Chat2DBContext.getSqlBuilder().buildCreateDatabaseSql(database);
return DataResult.of(Sql.builder().sql(sql).build());
}
@Override
public ActionResult modifyDatabase(DatabaseOperationParam param) {
Chat2DBContext.getDBManage().modifyDatabase(Chat2DBContext.getConnection(), param.getDatabaseName(),
param.getNewDatabaseName());
public ActionResult modifyDatabase(DatabaseCreateParam param) {
Chat2DBContext.getDBManage().modifyDatabase(Chat2DBContext.getConnection(), param.getName(),
param.getName());
return ActionResult.isSuccess();
}
@ -161,10 +163,9 @@ public class DatabaseServiceImpl implements DatabaseService {
}
@Override
public ActionResult createSchema(SchemaOperationParam param) {
Chat2DBContext.getDBManage().createSchema(Chat2DBContext.getConnection(), param.getDatabaseName(),
param.getSchemaName());
return ActionResult.isSuccess();
public DataResult<Sql> createSchema(Schema schema) {
String sql = Chat2DBContext.getSqlBuilder().buildCreateSchemaSql(schema);
return DataResult.of(Sql.builder().sql(sql).build());
}
@Override