mirror of
https://github.com/CodePhiliaX/Chat2DB.git
synced 2025-09-19 23:33:34 +08:00
Support for creating database and schema
This commit is contained in:
@ -1,6 +1,6 @@
|
||||
package ai.chat2db.server.web.api.controller.rdb;
|
||||
|
||||
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.service.DatabaseService;
|
||||
@ -10,12 +10,17 @@ import ai.chat2db.server.tools.base.wrapper.result.ListResult;
|
||||
import ai.chat2db.server.web.api.aspect.ConnectionInfoAspect;
|
||||
import ai.chat2db.server.web.api.controller.data.source.request.DataSourceBaseRequest;
|
||||
import ai.chat2db.server.web.api.controller.data.source.vo.DatabaseVO;
|
||||
import ai.chat2db.server.web.api.controller.rdb.converter.DatabaseConverter;
|
||||
import ai.chat2db.server.web.api.controller.rdb.converter.RdbWebConverter;
|
||||
import ai.chat2db.server.web.api.controller.rdb.request.DatabaseCreateRequest;
|
||||
import ai.chat2db.server.web.api.controller.rdb.request.UpdateDatabaseRequest;
|
||||
import ai.chat2db.server.web.api.controller.rdb.vo.MetaSchemaVO;
|
||||
import ai.chat2db.spi.model.Database;
|
||||
import ai.chat2db.spi.model.MetaSchema;
|
||||
import ai.chat2db.spi.model.Sql;
|
||||
import jakarta.validation.Valid;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.poi.util.StringUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
@ -36,6 +41,9 @@ public class DatabaseController {
|
||||
@Autowired
|
||||
private DatabaseService databaseService;
|
||||
|
||||
@Autowired
|
||||
public DatabaseConverter databaseConverter;
|
||||
|
||||
/**
|
||||
* 查询数据库里包含的database_schema_list
|
||||
*
|
||||
@ -69,7 +77,7 @@ public class DatabaseController {
|
||||
*/
|
||||
@PostMapping("/delete_database")
|
||||
public ActionResult deleteDatabase(@Valid @RequestBody DataSourceBaseRequest request) {
|
||||
DatabaseOperationParam param = DatabaseOperationParam.builder().databaseName(request.getDatabaseName()).build();
|
||||
DatabaseCreateParam param = DatabaseCreateParam.builder().name(request.getDatabaseName()).build();
|
||||
return databaseService.deleteDatabase(param);
|
||||
}
|
||||
|
||||
@ -79,10 +87,13 @@ public class DatabaseController {
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/create_database")
|
||||
public ActionResult createDatabase(@Valid @RequestBody DataSourceBaseRequest request) {
|
||||
DatabaseOperationParam param = DatabaseOperationParam.builder().databaseName(request.getDatabaseName()).build();
|
||||
return databaseService.createDatabase(param);
|
||||
@PostMapping("/create_database_sql")
|
||||
public DataResult<Sql> createDatabase(@Valid @RequestBody DatabaseCreateRequest request) {
|
||||
if(StringUtils.isBlank(request.getName())){
|
||||
request.setName(request.getDatabaseName());
|
||||
}
|
||||
Database database = databaseConverter.request2param(request);
|
||||
return databaseService.createDatabase(database);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -93,8 +104,8 @@ public class DatabaseController {
|
||||
*/
|
||||
@PostMapping("/modify_database")
|
||||
public ActionResult modifyDatabase(@Valid @RequestBody UpdateDatabaseRequest request) {
|
||||
DatabaseOperationParam param = DatabaseOperationParam.builder().databaseName(request.getDatabaseName())
|
||||
.newDatabaseName(request.getNewDatabaseName()).build();
|
||||
DatabaseCreateParam param = DatabaseCreateParam.builder().name(request.getDatabaseName())
|
||||
.name(request.getNewDatabaseName()).build();
|
||||
return databaseService.modifyDatabase(param);
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
package ai.chat2db.server.web.api.controller.rdb;
|
||||
|
||||
import ai.chat2db.server.domain.api.param.*;
|
||||
import ai.chat2db.server.domain.api.param.datasource.DatabaseOperationParam;
|
||||
import ai.chat2db.server.domain.api.param.datasource.DatabaseCreateParam;
|
||||
import ai.chat2db.server.domain.api.service.DatabaseService;
|
||||
import ai.chat2db.server.domain.api.service.DlTemplateService;
|
||||
import ai.chat2db.server.domain.api.service.TableService;
|
||||
@ -118,83 +118,6 @@ public class RdbDdlController extends EmbeddingController {
|
||||
return DataResult.of(schemaDto2vo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除数据库
|
||||
*
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/delete_database")
|
||||
public ActionResult deleteDatabase(@Valid @RequestBody DataSourceBaseRequest request) {
|
||||
DatabaseOperationParam param = DatabaseOperationParam.builder().databaseName(request.getDatabaseName()).build();
|
||||
return databaseService.deleteDatabase(param);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建database
|
||||
*
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/create_database")
|
||||
public ActionResult createDatabase(@Valid @RequestBody DataSourceBaseRequest request) {
|
||||
DatabaseOperationParam param = DatabaseOperationParam.builder().databaseName(request.getDatabaseName()).build();
|
||||
return databaseService.createDatabase(param);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建database
|
||||
*
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/modify_database")
|
||||
public ActionResult modifyDatabase(@Valid @RequestBody UpdateDatabaseRequest request) {
|
||||
DatabaseOperationParam param = DatabaseOperationParam.builder().databaseName(request.getDatabaseName())
|
||||
.newDatabaseName(request.getNewDatabaseName()).build();
|
||||
return databaseService.modifyDatabase(param);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除schema
|
||||
*
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/delete_schema")
|
||||
public ActionResult deleteSchema(@Valid @RequestBody DataSourceBaseRequest request) {
|
||||
SchemaOperationParam param = SchemaOperationParam.builder().databaseName(request.getDatabaseName())
|
||||
.schemaName(request.getSchemaName()).build();
|
||||
return databaseService.deleteSchema(param);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建schema
|
||||
*
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/create_schema")
|
||||
public ActionResult createSchema(@Valid @RequestBody DataSourceBaseRequest request) {
|
||||
SchemaOperationParam param = SchemaOperationParam.builder().databaseName(request.getDatabaseName())
|
||||
.schemaName(request.getSchemaName()).build();
|
||||
return databaseService.createSchema(param);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建database
|
||||
*
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/modify_schema")
|
||||
public ActionResult modifySchema(@Valid @RequestBody UpdateSchemaRequest request) {
|
||||
SchemaOperationParam param = SchemaOperationParam.builder().databaseName(request.getDatabaseName())
|
||||
.schemaName(request.getSchemaName()).newSchemaName(request.getNewSchemaName()).build();
|
||||
return databaseService.modifySchema(param);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 查询当前DB下的表columns
|
||||
|
@ -8,13 +8,16 @@ import ai.chat2db.server.domain.api.service.DatabaseService;
|
||||
import ai.chat2db.server.domain.api.service.DlTemplateService;
|
||||
import ai.chat2db.server.domain.api.service.TableService;
|
||||
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.server.web.api.aspect.ConnectionInfoAspect;
|
||||
import ai.chat2db.server.web.api.controller.data.source.request.DataSourceBaseRequest;
|
||||
import ai.chat2db.server.web.api.controller.rdb.converter.RdbWebConverter;
|
||||
import ai.chat2db.server.web.api.controller.rdb.request.SchemaCreateRequest;
|
||||
import ai.chat2db.server.web.api.controller.rdb.request.UpdateSchemaRequest;
|
||||
import ai.chat2db.server.web.api.controller.rdb.vo.SchemaVO;
|
||||
import ai.chat2db.spi.model.Schema;
|
||||
import ai.chat2db.spi.model.Sql;
|
||||
import jakarta.validation.Valid;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
@ -52,7 +55,7 @@ public class SchemaController {
|
||||
@GetMapping("/list")
|
||||
public ListResult<SchemaVO> list(@Valid DataSourceBaseRequest request) {
|
||||
SchemaQueryParam queryParam = SchemaQueryParam.builder().dataSourceId(request.getDataSourceId()).dataBaseName(
|
||||
request.getDatabaseName()).refresh(request.isRefresh()).build();
|
||||
request.getDatabaseName()).refresh(request.isRefresh()).build();
|
||||
ListResult<Schema> tableColumns = databaseService.querySchema(queryParam);
|
||||
List<SchemaVO> tableVOS = rdbWebConverter.schemaDto2vo(tableColumns.getData());
|
||||
return ListResult.of(tableVOS);
|
||||
@ -67,7 +70,7 @@ public class SchemaController {
|
||||
@PostMapping("/delete_schema")
|
||||
public ActionResult deleteSchema(@Valid @RequestBody DataSourceBaseRequest request) {
|
||||
SchemaOperationParam param = SchemaOperationParam.builder().databaseName(request.getDatabaseName())
|
||||
.schemaName(request.getSchemaName()).build();
|
||||
.schemaName(request.getSchemaName()).build();
|
||||
return databaseService.deleteSchema(param);
|
||||
}
|
||||
|
||||
@ -77,11 +80,14 @@ public class SchemaController {
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/create_schema")
|
||||
public ActionResult createSchema(@Valid @RequestBody DataSourceBaseRequest request) {
|
||||
SchemaOperationParam param = SchemaOperationParam.builder().databaseName(request.getDatabaseName())
|
||||
.schemaName(request.getSchemaName()).build();
|
||||
return databaseService.createSchema(param);
|
||||
@PostMapping("/create_schema_sql")
|
||||
public DataResult<Sql> createSchema(@Valid @RequestBody SchemaCreateRequest request) {
|
||||
Schema schema = Schema.builder().databaseName(request.getDatabaseName())
|
||||
.name(request.getSchemaName())
|
||||
.owner(request.getOwner())
|
||||
.comment(request.getComment())
|
||||
.build();
|
||||
return databaseService.createSchema(schema);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -93,7 +99,7 @@ public class SchemaController {
|
||||
@PostMapping("/modify_schema")
|
||||
public ActionResult modifySchema(@Valid @RequestBody UpdateSchemaRequest request) {
|
||||
SchemaOperationParam param = SchemaOperationParam.builder().databaseName(request.getDatabaseName())
|
||||
.schemaName(request.getSchemaName()).newSchemaName(request.getNewSchemaName()).build();
|
||||
.schemaName(request.getSchemaName()).newSchemaName(request.getNewSchemaName()).build();
|
||||
return databaseService.modifySchema(param);
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,11 @@
|
||||
package ai.chat2db.server.web.api.controller.rdb.converter;
|
||||
|
||||
import ai.chat2db.server.web.api.controller.rdb.request.DatabaseCreateRequest;
|
||||
import ai.chat2db.spi.model.Database;
|
||||
import org.mapstruct.Mapper;
|
||||
|
||||
@Mapper(componentModel = "spring")
|
||||
public abstract class DatabaseConverter {
|
||||
|
||||
public abstract Database request2param(DatabaseCreateRequest request);
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
package ai.chat2db.server.web.api.controller.rdb.request;
|
||||
|
||||
import ai.chat2db.server.web.api.controller.data.source.request.DataSourceBaseRequest;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class DatabaseCreateRequest extends DataSourceBaseRequest {
|
||||
|
||||
private String name;
|
||||
|
||||
private String comment;
|
||||
|
||||
private String charset;
|
||||
|
||||
private String collation;
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
package ai.chat2db.server.web.api.controller.rdb.request;
|
||||
|
||||
import ai.chat2db.server.web.api.controller.data.source.request.DataSourceBaseRequest;
|
||||
import com.fasterxml.jackson.annotation.JsonAlias;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class SchemaCreateRequest extends DataSourceBaseRequest {
|
||||
|
||||
/**
|
||||
* 数据名字
|
||||
*/
|
||||
@JsonAlias({"TABLE_SCHEM"})
|
||||
private String name;
|
||||
|
||||
|
||||
private String comment;
|
||||
|
||||
|
||||
private String owner;
|
||||
}
|
@ -1,42 +0,0 @@
|
||||
////package ai.chat2db.server.web.api.controller.system;
|
||||
////
|
||||
////import ai.chat2db.server.tools.common.util.ConfigUtils;
|
||||
////import ai.chat2db.server.web.api.controller.system.util.SystemUtils;
|
||||
////import ai.chat2db.server.web.api.controller.system.vo.AppVersionVO;
|
||||
////import lombok.extern.slf4j.Slf4j;
|
||||
////import org.springframework.scheduling.annotation.Scheduled;
|
||||
////import org.springframework.stereotype.Component;
|
||||
////
|
||||
////@Slf4j
|
||||
////@Component
|
||||
////public class AutomaticUpgrade {
|
||||
////
|
||||
//// @Scheduled(fixedRate = 3600000) // 每小时运行一次
|
||||
//// public void checkVersionUpdates() {
|
||||
//// AppVersionVO appVersion = SystemUtils.getLatestVersion(ConfigUtils.getLocalVersion(), "auto", "");
|
||||
//// if (appVersion != null) {
|
||||
//// SystemUtils.upgrade(appVersion);
|
||||
//// }
|
||||
//// }
|
||||
////}
|
||||
//
|
||||
//const handleInsertText = (text, databaseCode: DatabaseTypeCode = DatabaseTypeCode.MYSQL) => {
|
||||
// if (
|
||||
// [DatabaseTypeCode.POSTGRESQL, DatabaseTypeCode.ORACLE, DatabaseTypeCode.DB2, DatabaseTypeCode.SQLITE].includes(
|
||||
// databaseCode,
|
||||
// )
|
||||
// ) {
|
||||
// return `\"${text}\"`;
|
||||
// } else if ([DatabaseTypeCode.SQLSERVER].includes(databaseCode)) {
|
||||
// return `[${text}]`;
|
||||
// } else if ([DatabaseTypeCode.MYSQL].includes(databaseCode)) {
|
||||
// return `\`${text}\``;
|
||||
// } else {
|
||||
// return `${text}`;
|
||||
// }
|
||||
// };
|
||||
//
|
||||
//"" oracele sqlite postgrsql h2 dm
|
||||
// ` MYSQL clickhouse MariaDB
|
||||
// [ sqlserver
|
||||
//
|
Reference in New Issue
Block a user