mirror of
https://github.com/CodePhiliaX/Chat2DB.git
synced 2025-08-02 13:34:07 +08:00
Complete the datasource code
This commit is contained in:
@ -0,0 +1,36 @@
|
||||
package ai.chat2db.server.domain.api.enums;
|
||||
|
||||
import ai.chat2db.server.tools.base.enums.BaseEnum;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* Data Source Kind
|
||||
*
|
||||
* @author Jiaju Zhuang
|
||||
*/
|
||||
@Getter
|
||||
public enum DataSourceKindEnum implements BaseEnum<String> {
|
||||
/**
|
||||
* PRIVATE
|
||||
*/
|
||||
PRIVATE("PRIVATE"),
|
||||
|
||||
/**
|
||||
* SHARED
|
||||
*/
|
||||
SHARED("SHARED"),
|
||||
|
||||
;
|
||||
|
||||
final String description;
|
||||
|
||||
DataSourceKindEnum(String description) {
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCode() {
|
||||
return this.name();
|
||||
}
|
||||
|
||||
}
|
@ -119,6 +119,18 @@ public class DataSource {
|
||||
*/
|
||||
private Environment environment;
|
||||
|
||||
/**
|
||||
* 用户id
|
||||
*/
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 连接类型
|
||||
*
|
||||
* @see ai.chat2db.server.domain.api.enums.DataSourceKindEnum
|
||||
*/
|
||||
private String kind;
|
||||
|
||||
public LinkedHashMap<String, Object> getExtendMap() {
|
||||
if (ObjectUtils.isEmpty(extendInfo)) {
|
||||
return new LinkedHashMap<>();
|
||||
|
@ -94,4 +94,11 @@ public class DataSourceCreateParam {
|
||||
* 驱动配置
|
||||
*/
|
||||
private DriverConfig driverConfig;
|
||||
|
||||
/**
|
||||
* 连接类型
|
||||
*
|
||||
* @see ai.chat2db.server.domain.api.enums.DataSourceKindEnum
|
||||
*/
|
||||
private String kind;
|
||||
}
|
||||
|
@ -16,4 +16,11 @@ public class DataSourcePageQueryParam extends PageQueryParam {
|
||||
* 搜索关键词
|
||||
*/
|
||||
private String searchKey;
|
||||
|
||||
/**
|
||||
* 连接类型
|
||||
*
|
||||
* @see ai.chat2db.server.domain.api.enums.DataSourceKindEnum
|
||||
*/
|
||||
private String kind;
|
||||
}
|
||||
|
@ -1,6 +1,9 @@
|
||||
package ai.chat2db.server.domain.api.param;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
/**
|
||||
* @author moji
|
||||
@ -8,6 +11,13 @@ import lombok.Data;
|
||||
* @date 2022/09/23
|
||||
*/
|
||||
@Data
|
||||
@SuperBuilder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class DataSourceSelector {
|
||||
|
||||
/**
|
||||
* 环境id
|
||||
*/
|
||||
private Boolean environment;
|
||||
}
|
||||
|
@ -100,4 +100,5 @@ public class DataSourceUpdateParam {
|
||||
* 驱动配置
|
||||
*/
|
||||
private DriverConfig driverConfig;
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,18 @@
|
||||
package ai.chat2db.server.domain.api.param;
|
||||
|
||||
import ai.chat2db.server.tools.base.wrapper.param.PageQueryParam;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* environment
|
||||
*
|
||||
* @author Jiaju Zhuang
|
||||
*/
|
||||
@Data
|
||||
public class EnvironmentPageQueryParam extends PageQueryParam {
|
||||
|
||||
/**
|
||||
* 搜索关键词
|
||||
*/
|
||||
private String searchKey;
|
||||
}
|
@ -31,7 +31,8 @@ public interface DataSourceService {
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
DataResult<Long> create(DataSourceCreateParam param);
|
||||
DataResult<Long> createWithPermission(DataSourceCreateParam param);
|
||||
|
||||
|
||||
/**
|
||||
* 更新数据源连接
|
||||
@ -39,7 +40,7 @@ public interface DataSourceService {
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
ActionResult update(DataSourceUpdateParam param);
|
||||
ActionResult updateWithPermission(DataSourceUpdateParam param);
|
||||
|
||||
/**
|
||||
* 删除数据源连接
|
||||
@ -47,7 +48,7 @@ public interface DataSourceService {
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
ActionResult delete(@NotNull Long id);
|
||||
ActionResult deleteWithPermission(@NotNull Long id);
|
||||
|
||||
/**
|
||||
* 根据id查询数据源连接详情
|
||||
@ -57,6 +58,15 @@ public interface DataSourceService {
|
||||
*/
|
||||
DataResult<DataSource> queryById(@NotNull Long id);
|
||||
|
||||
/**
|
||||
* 根据id查询数据源连接详情
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
* @throws ai.chat2db.server.tools.common.exception.DataNotFoundException
|
||||
*/
|
||||
DataResult<DataSource> queryExistent(@NotNull Long id);
|
||||
|
||||
/**
|
||||
* 克隆连接
|
||||
*
|
||||
|
@ -0,0 +1,33 @@
|
||||
package ai.chat2db.server.domain.api.service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import ai.chat2db.server.domain.api.model.Environment;
|
||||
import ai.chat2db.server.domain.api.param.EnvironmentPageQueryParam;
|
||||
import ai.chat2db.server.tools.base.wrapper.result.ListResult;
|
||||
import ai.chat2db.server.tools.base.wrapper.result.PageResult;
|
||||
|
||||
/**
|
||||
* environment
|
||||
*
|
||||
* @author Jiaju Zhuang
|
||||
*/
|
||||
public interface EnvironmentService {
|
||||
|
||||
/**
|
||||
* List Query Data
|
||||
*
|
||||
* @param idList
|
||||
* @return
|
||||
*/
|
||||
ListResult<Environment> listQuery(List<Long> idList);
|
||||
|
||||
/**
|
||||
* Paging Query Data
|
||||
*
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
PageResult<Environment> pageQuery(EnvironmentPageQueryParam param);
|
||||
|
||||
}
|
@ -168,6 +168,7 @@ public abstract class DataSourceConverter {
|
||||
+ ".class))")
|
||||
@Mapping(target = "extendInfo",
|
||||
expression = "java(com.alibaba.fastjson2.JSON.parseArray(dataSourceDO.getExtendInfo(),ai.chat2db.spi.model.KeyValue.class))")
|
||||
@Mapping(target = "environment.id", source = "environmentId")
|
||||
public abstract DataSource do2dto(DataSourceDO dataSourceDO);
|
||||
|
||||
/**
|
||||
|
@ -0,0 +1,65 @@
|
||||
package ai.chat2db.server.domain.core.converter;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import ai.chat2db.server.domain.api.model.Environment;
|
||||
import ai.chat2db.server.domain.api.service.EnvironmentService;
|
||||
import ai.chat2db.server.domain.repository.entity.EnvironmentDO;
|
||||
import ai.chat2db.server.tools.common.util.EasyCollectionUtils;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.Mapping;
|
||||
import org.mapstruct.MappingTarget;
|
||||
import org.mapstruct.Mappings;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
|
||||
/**
|
||||
* converter
|
||||
*
|
||||
* @author Jiaju Zhuang
|
||||
*/
|
||||
@Slf4j
|
||||
@Mapper(componentModel = "spring")
|
||||
public abstract class EnvironmentConverter {
|
||||
|
||||
@Resource
|
||||
@Lazy
|
||||
private EnvironmentService environmentService;
|
||||
|
||||
/**
|
||||
* convert
|
||||
*
|
||||
* @param list
|
||||
* @return
|
||||
*/
|
||||
public abstract List<Environment> do2dto(List<EnvironmentDO> list);
|
||||
|
||||
/**
|
||||
* Fill in detailed information
|
||||
*
|
||||
* @param list
|
||||
*/
|
||||
public void fillDetail(List<Environment> list) {
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
return;
|
||||
}
|
||||
List<Long> idList = EasyCollectionUtils.toList(list, Environment::getId);
|
||||
List<Environment> queryList = environmentService.listQuery(idList).getData();
|
||||
Map<Long, Environment> queryMap = EasyCollectionUtils.toIdentityMap(queryList, Environment::getId);
|
||||
for (Environment data : list) {
|
||||
if (data == null || data.getId() == null) {
|
||||
continue;
|
||||
}
|
||||
Environment query = queryMap.get(data.getId());
|
||||
add(data, query);
|
||||
}
|
||||
}
|
||||
|
||||
@Mappings({
|
||||
@Mapping(target = "id", ignore = true),
|
||||
})
|
||||
public abstract void add(@MappingTarget Environment target, Environment source);
|
||||
}
|
@ -5,6 +5,7 @@ import java.sql.SQLException;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
import ai.chat2db.server.domain.api.enums.DataSourceKindEnum;
|
||||
import ai.chat2db.server.domain.api.model.DataSource;
|
||||
import ai.chat2db.server.domain.api.param.DataSourceCloseParam;
|
||||
import ai.chat2db.server.domain.api.param.DataSourceCreateParam;
|
||||
@ -17,6 +18,8 @@ import ai.chat2db.server.domain.api.param.DatabaseQueryAllParam;
|
||||
import ai.chat2db.server.domain.api.service.DataSourceService;
|
||||
import ai.chat2db.server.domain.api.service.DatabaseService;
|
||||
import ai.chat2db.server.domain.core.converter.DataSourceConverter;
|
||||
import ai.chat2db.server.domain.core.converter.EnvironmentConverter;
|
||||
import ai.chat2db.server.domain.core.util.PermissionUtils;
|
||||
import ai.chat2db.server.domain.repository.entity.DataSourceDO;
|
||||
import ai.chat2db.server.domain.repository.mapper.DataSourceCustomMapper;
|
||||
import ai.chat2db.server.domain.repository.mapper.DataSourceMapper;
|
||||
@ -24,8 +27,13 @@ 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.tools.base.wrapper.result.PageResult;
|
||||
import ai.chat2db.server.tools.common.exception.DataNotFoundException;
|
||||
import ai.chat2db.server.tools.common.exception.ParamBusinessException;
|
||||
import ai.chat2db.server.tools.common.exception.PermissionDeniedBusinessException;
|
||||
import ai.chat2db.server.tools.common.model.LoginUser;
|
||||
import ai.chat2db.server.tools.common.util.ContextUtils;
|
||||
import ai.chat2db.server.tools.common.util.EasyCollectionUtils;
|
||||
import ai.chat2db.server.tools.common.util.EasyEnumUtils;
|
||||
import ai.chat2db.spi.config.DriverConfig;
|
||||
import ai.chat2db.spi.model.DataSourceConnect;
|
||||
import ai.chat2db.spi.model.Database;
|
||||
@ -39,6 +47,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.BooleanUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@ -63,9 +72,18 @@ public class DataSourceServiceImpl implements DataSourceService {
|
||||
private DatabaseService databaseService;
|
||||
@Resource
|
||||
private DataSourceCustomMapper dataSourceCustomMapper;
|
||||
@Resource
|
||||
private EnvironmentConverter environmentConverter;
|
||||
|
||||
@Override
|
||||
public DataResult<Long> create(DataSourceCreateParam param) {
|
||||
public DataResult<Long> createWithPermission(DataSourceCreateParam param) {
|
||||
DataSourceKindEnum dataSourceKind = EasyEnumUtils.getEnum(DataSourceKindEnum.class, param.getKind());
|
||||
if (dataSourceKind == null) {
|
||||
throw new ParamBusinessException("kind");
|
||||
}
|
||||
if (dataSourceKind == DataSourceKindEnum.SHARED && !ContextUtils.getLoginUser().getAdmin()) {
|
||||
throw new PermissionDeniedBusinessException();
|
||||
}
|
||||
DataSourceDO dataSourceDO = dataSourceConverter.param2do(param);
|
||||
dataSourceDO.setGmtCreate(LocalDateTime.now());
|
||||
dataSourceDO.setGmtModified(LocalDateTime.now());
|
||||
@ -94,7 +112,10 @@ public class DataSourceServiceImpl implements DataSourceService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionResult update(DataSourceUpdateParam param) {
|
||||
public ActionResult updateWithPermission(DataSourceUpdateParam param) {
|
||||
DataSource dataSource = queryExistent(param.getId()).getData();
|
||||
PermissionUtils.checkPermission(dataSource.getUserId());
|
||||
|
||||
DataSourceDO dataSourceDO = dataSourceConverter.param2do(param);
|
||||
dataSourceDO.setGmtModified(LocalDateTime.now());
|
||||
dataSourceMapper.updateById(dataSourceDO);
|
||||
@ -102,7 +123,11 @@ public class DataSourceServiceImpl implements DataSourceService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionResult delete(Long id) {
|
||||
public ActionResult deleteWithPermission(Long id) {
|
||||
|
||||
DataSource dataSource = queryExistent(id).getData();
|
||||
PermissionUtils.checkPermission(dataSource.getUserId());
|
||||
|
||||
dataSourceMapper.deleteById(id);
|
||||
return ActionResult.isSuccess();
|
||||
}
|
||||
@ -113,6 +138,15 @@ public class DataSourceServiceImpl implements DataSourceService {
|
||||
return DataResult.of(dataSourceConverter.do2dto(dataSourceDO));
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataResult<DataSource> queryExistent(Long id) {
|
||||
DataResult<DataSource> dataResult = queryById(id);
|
||||
if (dataResult.getData() == null) {
|
||||
throw new DataNotFoundException();
|
||||
}
|
||||
return dataResult;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataResult<Long> copyById(Long id) {
|
||||
DataSourceDO dataSourceDO = dataSourceMapper.selectById(id);
|
||||
@ -138,6 +172,9 @@ public class DataSourceServiceImpl implements DataSourceService {
|
||||
Page<DataSourceDO> page = new Page<>(start, offset);
|
||||
IPage<DataSourceDO> iPage = dataSourceMapper.selectPage(page, queryWrapper);
|
||||
List<DataSource> dataSources = dataSourceConverter.do2dto(iPage.getRecords());
|
||||
|
||||
fillData(dataSources,selector);
|
||||
|
||||
return PageResult.of(dataSources, iPage.getTotal(), param);
|
||||
}
|
||||
|
||||
@ -148,6 +185,9 @@ public class DataSourceServiceImpl implements DataSourceService {
|
||||
new Page<>(param.getPageNo(), param.getPageSize()),
|
||||
BooleanUtils.isTrue(loginUser.getAdmin()), loginUser.getId(), param.getSearchKey());
|
||||
List<DataSource> dataSources = dataSourceConverter.do2dto(iPage.getRecords());
|
||||
|
||||
fillData(dataSources,selector);
|
||||
|
||||
return PageResult.of(dataSources, iPage.getTotal(), param);
|
||||
|
||||
}
|
||||
@ -194,4 +234,19 @@ public class DataSourceServiceImpl implements DataSourceService {
|
||||
return ActionResult.isSuccess();
|
||||
}
|
||||
|
||||
private void fillData(List<DataSource> list, DataSourceSelector selector) {
|
||||
if (CollectionUtils.isEmpty(list) || selector == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
fillEnvironment(list, selector);
|
||||
}
|
||||
|
||||
private void fillEnvironment(List<DataSource> list, DataSourceSelector selector) {
|
||||
if (BooleanUtils.isNotTrue(selector.getEnvironment())) {
|
||||
return;
|
||||
}
|
||||
environmentConverter.fillDetail(EasyCollectionUtils.toList(list, DataSource::getEnvironment));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,61 @@
|
||||
package ai.chat2db.server.domain.core.impl;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import ai.chat2db.server.domain.api.model.Environment;
|
||||
import ai.chat2db.server.domain.api.param.EnvironmentPageQueryParam;
|
||||
import ai.chat2db.server.domain.api.service.EnvironmentService;
|
||||
import ai.chat2db.server.domain.core.converter.EnvironmentConverter;
|
||||
import ai.chat2db.server.domain.repository.entity.EnvironmentDO;
|
||||
import ai.chat2db.server.domain.repository.mapper.EnvironmentMapper;
|
||||
import ai.chat2db.server.tools.base.wrapper.result.ListResult;
|
||||
import ai.chat2db.server.tools.base.wrapper.result.PageResult;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* environment
|
||||
*
|
||||
* @author Jiaju Zhuang
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class EnvironmentServiceImpl implements EnvironmentService {
|
||||
|
||||
@Resource
|
||||
private EnvironmentMapper environmentMapper;
|
||||
@Resource
|
||||
private EnvironmentConverter environmentConverter;
|
||||
|
||||
@Override
|
||||
public ListResult<Environment> listQuery(List<Long> idList) {
|
||||
if (CollectionUtils.isEmpty(idList)) {
|
||||
return ListResult.empty();
|
||||
}
|
||||
LambdaQueryWrapper<EnvironmentDO> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.in(EnvironmentDO::getId, idList);
|
||||
List<EnvironmentDO> dataList = environmentMapper.selectList(queryWrapper);
|
||||
List<Environment> list = environmentConverter.do2dto(dataList);
|
||||
return ListResult.of(list);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<Environment> pageQuery(EnvironmentPageQueryParam param) {
|
||||
LambdaQueryWrapper<EnvironmentDO> queryWrapper = new LambdaQueryWrapper<>();
|
||||
if (StringUtils.isNotBlank(param.getSearchKey())) {
|
||||
queryWrapper.and(wrapper -> wrapper.like(EnvironmentDO::getName, "%" + param.getSearchKey() + "%")
|
||||
.or()
|
||||
.like(EnvironmentDO::getShortName, "%" + param.getSearchKey() + "%"));
|
||||
}
|
||||
IPage<EnvironmentDO> iPage = environmentMapper.selectPage(new Page<>(param.getPageNo(), param.getPageSize()),
|
||||
queryWrapper);
|
||||
List<Environment> dataSources = environmentConverter.do2dto(iPage.getRecords());
|
||||
return PageResult.of(dataSources, iPage.getTotal(), param);
|
||||
}
|
||||
}
|
@ -0,0 +1,39 @@
|
||||
package ai.chat2db.server.domain.core.util;
|
||||
|
||||
import ai.chat2db.server.domain.api.enums.RoleCodeEnum;
|
||||
import ai.chat2db.server.tools.common.exception.PermissionDeniedBusinessException;
|
||||
import ai.chat2db.server.tools.common.model.LoginUser;
|
||||
import ai.chat2db.server.tools.common.util.ContextUtils;
|
||||
|
||||
/**
|
||||
* Permission Utils
|
||||
*
|
||||
* @author Jiaju Zhuang
|
||||
*/
|
||||
public class PermissionUtils {
|
||||
|
||||
/**
|
||||
* Verify whether the currently logged in user has permission to operate on the current content
|
||||
*
|
||||
* @param createUserId The creator of the current content
|
||||
*/
|
||||
public static void checkPermission(Long createUserId) {
|
||||
LoginUser loginUser = ContextUtils.getLoginUser();
|
||||
// Representative is desktop mode
|
||||
if (RoleCodeEnum.DESKTOP.getDefaultUserId().equals(loginUser.getId())) {
|
||||
if (RoleCodeEnum.DESKTOP.getDefaultUserId().equals(createUserId)) {
|
||||
return;
|
||||
} else {
|
||||
throw new PermissionDeniedBusinessException();
|
||||
}
|
||||
}
|
||||
// Administrators can edit anything
|
||||
if (loginUser.getAdmin()) {
|
||||
return;
|
||||
}
|
||||
// Not that administrators can only edit their own things
|
||||
if (!loginUser.getId().equals(createUserId)) {
|
||||
throw new PermissionDeniedBusinessException();
|
||||
}
|
||||
}
|
||||
}
|
@ -14,7 +14,7 @@ import lombok.Setter;
|
||||
* </p>
|
||||
*
|
||||
* @author chat2db
|
||||
* @since 2023-08-05
|
||||
* @since 2023-08-06
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@ -123,4 +123,9 @@ public class DataSourceDO implements Serializable {
|
||||
* 环境id
|
||||
*/
|
||||
private Long environmentId;
|
||||
|
||||
/**
|
||||
* 连接类型
|
||||
*/
|
||||
private String kind;
|
||||
}
|
||||
|
@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
* </p>
|
||||
*
|
||||
* @author chat2db
|
||||
* @since 2023-07-30
|
||||
* @since 2023-08-06
|
||||
*/
|
||||
public interface DataSourceMapper extends BaseMapper<DataSourceDO> {
|
||||
|
||||
|
@ -4,6 +4,7 @@ import ai.chat2db.server.tools.common.enums.ModeEnum;
|
||||
import ai.chat2db.server.tools.common.model.ConfigJson;
|
||||
import ai.chat2db.server.tools.common.util.ConfigUtils;
|
||||
import ai.chat2db.server.tools.common.util.EasyEnumUtils;
|
||||
import cn.hutool.core.lang.UUID;
|
||||
import com.dtflys.forest.springboot.annotation.ForestScan;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
@ -49,6 +50,18 @@ public class Application {
|
||||
// In this mode, no user login is required, so only local access is available
|
||||
args = ArrayUtils.add(args, "--server.address=0.0.0.0");
|
||||
}
|
||||
|
||||
String jwtSecretKey = System.getProperty("sa-token.jwt-secret-key");
|
||||
// The user did not specify the jws key
|
||||
if (StringUtils.isBlank(jwtSecretKey)) {
|
||||
if (StringUtils.isBlank(configJson.getJwtSecretKey())) {
|
||||
configJson.setJwtSecretKey(UUID.fastUUID().toString().replaceAll("-", ""));
|
||||
ConfigUtils.setConfig(configJson);
|
||||
}
|
||||
// Ensure that the jwt Secret Key for each application is unique
|
||||
args = ArrayUtils.add(args, "--sa-token.jwt-secret-key=" + configJson.getJwtSecretKey());
|
||||
}
|
||||
|
||||
SpringApplication.run(Application.class, args);
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,8 @@ spring:
|
||||
# 默认开发环境
|
||||
profiles:
|
||||
active: dev
|
||||
main:
|
||||
allow-bean-definition-overriding: true
|
||||
jpa:
|
||||
# 展示sql
|
||||
show-sql: true
|
||||
@ -50,7 +52,7 @@ logging:
|
||||
# 登录功能
|
||||
sa-token:
|
||||
# token名称 (同时也是cookie名称)
|
||||
token-name: DBHUB
|
||||
token-name: CHAT2DB
|
||||
timeout: 2592000
|
||||
# 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录)
|
||||
is-concurrent: true
|
||||
@ -60,8 +62,6 @@ sa-token:
|
||||
token-style: uuid
|
||||
# 是否输出操作日志
|
||||
is-log: true
|
||||
# jwt秘钥 部署的时候需要改掉,不然可以随便破解登录
|
||||
jwt-secret-key: jwt_dbhub
|
||||
is-write-header: true
|
||||
|
||||
chatgpt:
|
||||
|
@ -26,6 +26,9 @@ ALTER TABLE `data_source`
|
||||
ALTER TABLE `data_source`
|
||||
modify COLUMN `user_id` bigint(20) unsigned NOT NULL DEFAULT 1 COMMENT '用户id';
|
||||
|
||||
ALTER TABLE `data_source`
|
||||
ADD COLUMN `kind` varchar(32) NOT NULL DEFAULT 'PRIVATE' COMMENT '连接类型';
|
||||
|
||||
update data_source
|
||||
set user_id= 1;
|
||||
|
||||
|
@ -8,6 +8,7 @@ common.paramDetailError=The parameter: {0} is incorrect
|
||||
common.paramCheckError=The following parameters are not valid:
|
||||
common.maxUploadSize=The file exceeds the maximum limit
|
||||
common.permissionDenied=Permission denied
|
||||
common.dataNotFound=Data not found
|
||||
|
||||
oauth.userNameNotExits=The current account does not exist
|
||||
oauth.IllegalUserName=The current account cannot be logged in. Please change your account
|
||||
|
@ -7,6 +7,7 @@ common.paramDetailError=The parameter: {0} is incorrect
|
||||
common.paramCheckError=The following parameters are not valid
|
||||
common.maxUploadSize=The file exceeds the maximum limit
|
||||
common.permissionDenied=Permission denied
|
||||
common.dataNotFound=Data not found
|
||||
|
||||
oauth.userNameNotExits=The current account does not exist
|
||||
oauth.IllegalUserName=The current account cannot be logged in. Please change your account
|
||||
|
@ -7,6 +7,7 @@ common.paramDetailError=您输入的参数:{0},存在异常
|
||||
common.paramCheckError=请检查以下参数:
|
||||
common.maxUploadSize=您输入的文件超过最大限制
|
||||
common.permissionDenied=您没有权限访问该页面
|
||||
common.dataNotFound=您访问的数据不存在
|
||||
|
||||
oauth.userNameNotExits=当前账号不存在
|
||||
oauth.IllegalUserName=当前账号无法登录,请换一个账号
|
||||
|
@ -83,6 +83,7 @@ public class MybatisGeneratorTest extends BaseTest {
|
||||
//开启实体类配置
|
||||
.entityBuilder()
|
||||
.formatFileName("%sDO")
|
||||
.enableFileOverride()
|
||||
//.addTableFills(new Column("gmt_create", FieldFill.INSERT)) // 表字段填充
|
||||
//.addTableFills(new Column("update_time", FieldFill.INSERT_UPDATE)) // 表字段填充
|
||||
//开启lombok
|
||||
|
@ -89,7 +89,7 @@ public class SQLExecutorOperationsTest extends BaseTest {
|
||||
dataSourceCreateParam.setUrl(dialectProperties.getUrl());
|
||||
dataSourceCreateParam.setUserName(dialectProperties.getUsername());
|
||||
dataSourceCreateParam.setPassword(dialectProperties.getPassword());
|
||||
DataResult<Long> dataSourceConnect = dataSourceService.create(dataSourceCreateParam);
|
||||
DataResult<Long> dataSourceConnect = dataSourceService.createWithPermission(dataSourceCreateParam);
|
||||
Assertions.assertTrue(dataSourceConnect.getSuccess(), "创建数据库连接池失败");
|
||||
// Assertions.assertTrue(DataCenterUtils.JDBC_ACCESSOR_MAP.containsKey(dataSourceId), "创建数据库连接池失败");
|
||||
}
|
||||
|
@ -1,35 +0,0 @@
|
||||
package ai.chat2db.server.tools.base.enums;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* @author moji
|
||||
* @version ConnectionTypeEnum.java, v 0.1 2022年09月16日 14:59 moji Exp $
|
||||
* @date 2022/09/16
|
||||
*/
|
||||
@Getter
|
||||
public enum EnvTypeEnum implements BaseEnum<String> {
|
||||
|
||||
/**
|
||||
* 日常环境
|
||||
*/
|
||||
DAILY("日常环境"),
|
||||
|
||||
/**
|
||||
* 生产环境
|
||||
*/
|
||||
PRODUCT("生产环境"),
|
||||
|
||||
;
|
||||
|
||||
final String description;
|
||||
|
||||
EnvTypeEnum(String description) {
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCode() {
|
||||
return this.name();
|
||||
}
|
||||
}
|
@ -11,8 +11,6 @@ import ai.chat2db.server.tools.base.wrapper.Result;
|
||||
import ai.chat2db.server.tools.base.wrapper.param.PageQueryParam;
|
||||
import ai.chat2db.server.tools.base.wrapper.result.web.WebPageResult;
|
||||
import ai.chat2db.server.tools.base.wrapper.result.web.WebPageResult.Page;
|
||||
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
@ -162,6 +160,7 @@ public class PageResult<T> implements Serializable, Result<List<T>> {
|
||||
return new PageResult<>(data, 0L, param.getPageNo(), param.getPageSize());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 构建空的返回对象
|
||||
*
|
||||
|
@ -0,0 +1,24 @@
|
||||
package ai.chat2db.server.tools.common.exception;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
import ai.chat2db.server.tools.base.constant.EasyToolsConstant;
|
||||
import ai.chat2db.server.tools.base.excption.BusinessException;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* Data not found exceptions
|
||||
*
|
||||
* @author Jiaju Zhuang
|
||||
*/
|
||||
@Getter
|
||||
public class DataNotFoundException extends BusinessException {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = EasyToolsConstant.SERIAL_VERSION_UID;
|
||||
|
||||
public DataNotFoundException() {
|
||||
super("common.dataNotFound");
|
||||
}
|
||||
|
||||
}
|
@ -20,4 +20,9 @@ public class ConfigJson {
|
||||
* Last successfully launched version
|
||||
*/
|
||||
private String latestStartupSuccessVersion;
|
||||
|
||||
/**
|
||||
* jwt
|
||||
*/
|
||||
private String jwtSecretKey;
|
||||
}
|
||||
|
@ -37,4 +37,9 @@ public class LoginUser implements Serializable {
|
||||
* Is it an administrator
|
||||
*/
|
||||
private Boolean admin;
|
||||
|
||||
/**
|
||||
* Is it an desktop
|
||||
*/
|
||||
private Boolean desktop;
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
|
||||
package ai.chat2db.server.admin.api.controller.common;
|
||||
|
||||
import ai.chat2db.server.admin.api.controller.common.request.CommonPageQueryRequest;
|
||||
import ai.chat2db.server.common.api.controller.request.CommonPageQueryRequest;
|
||||
import ai.chat2db.server.admin.api.controller.common.vo.TeamUserListVO;
|
||||
import ai.chat2db.server.admin.api.controller.datasource.converter.DataSourceAdminConverter;
|
||||
import ai.chat2db.server.domain.api.service.DataSourceService;
|
||||
|
@ -1,13 +1,14 @@
|
||||
|
||||
package ai.chat2db.server.admin.api.controller.datasource;
|
||||
|
||||
import ai.chat2db.server.admin.api.controller.common.request.CommonPageQueryRequest;
|
||||
import ai.chat2db.server.common.api.controller.request.CommonPageQueryRequest;
|
||||
import ai.chat2db.server.admin.api.controller.datasource.converter.DataSourceAdminConverter;
|
||||
import ai.chat2db.server.admin.api.controller.datasource.request.DataSourceCloneRequest;
|
||||
import ai.chat2db.server.admin.api.controller.datasource.request.DataSourceCreateRequest;
|
||||
import ai.chat2db.server.admin.api.controller.datasource.request.DataSourceUpdateRequest;
|
||||
import ai.chat2db.server.admin.api.controller.datasource.vo.DataSourcePageQueryVO;
|
||||
import ai.chat2db.server.domain.api.param.DataSourceCreateParam;
|
||||
import ai.chat2db.server.domain.api.param.DataSourceSelector;
|
||||
import ai.chat2db.server.domain.api.param.DataSourceUpdateParam;
|
||||
import ai.chat2db.server.domain.api.service.DataSourceService;
|
||||
import ai.chat2db.server.tools.base.wrapper.result.ActionResult;
|
||||
@ -32,6 +33,9 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
@RestController
|
||||
public class DataSourceAdminController {
|
||||
|
||||
private static final DataSourceSelector DATA_SOURCE_SELECTOR = DataSourceSelector.builder()
|
||||
.environment(Boolean.TRUE)
|
||||
.build();
|
||||
@Resource
|
||||
private DataSourceService dataSourceService;
|
||||
@Resource
|
||||
@ -46,7 +50,7 @@ public class DataSourceAdminController {
|
||||
*/
|
||||
@GetMapping("/page")
|
||||
public WebPageResult<DataSourcePageQueryVO> page(@Valid CommonPageQueryRequest request) {
|
||||
return dataSourceService.queryPageWithPermission(dataSourceAdminConverter.request2param(request), null)
|
||||
return dataSourceService.queryPageWithPermission(dataSourceAdminConverter.request2param(request), DATA_SOURCE_SELECTOR)
|
||||
.mapToWeb(dataSourceAdminConverter::dto2vo);
|
||||
}
|
||||
|
||||
@ -58,9 +62,9 @@ public class DataSourceAdminController {
|
||||
* @version 2.1.0
|
||||
*/
|
||||
@PostMapping("/create")
|
||||
public DataResult<Long> create(@RequestBody DataSourceCreateRequest request) {
|
||||
public DataResult<Long> create(@Valid @RequestBody DataSourceCreateRequest request) {
|
||||
DataSourceCreateParam param = dataSourceAdminConverter.createReq2param(request);
|
||||
return dataSourceService.create(param);
|
||||
return dataSourceService.createWithPermission(param);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -71,9 +75,9 @@ public class DataSourceAdminController {
|
||||
* @version 2.1.0
|
||||
*/
|
||||
@PostMapping("/update")
|
||||
public ActionResult update(@RequestBody DataSourceUpdateRequest request) {
|
||||
public ActionResult update(@Valid @RequestBody DataSourceUpdateRequest request) {
|
||||
DataSourceUpdateParam param = dataSourceAdminConverter.updateReq2param(request);
|
||||
return dataSourceService.update(param);
|
||||
return dataSourceService.updateWithPermission(param);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -97,6 +101,6 @@ public class DataSourceAdminController {
|
||||
*/
|
||||
@DeleteMapping("/{id}")
|
||||
public ActionResult delete(@PathVariable Long id) {
|
||||
return dataSourceService.delete(id);
|
||||
return dataSourceService.deleteWithPermission(id);
|
||||
}
|
||||
}
|
||||
|
@ -1,9 +1,10 @@
|
||||
package ai.chat2db.server.admin.api.controller.datasource.converter;
|
||||
|
||||
import ai.chat2db.server.admin.api.controller.common.request.CommonPageQueryRequest;
|
||||
import ai.chat2db.server.admin.api.controller.datasource.request.DataSourceCreateRequest;
|
||||
import ai.chat2db.server.admin.api.controller.datasource.request.DataSourceUpdateRequest;
|
||||
import ai.chat2db.server.admin.api.controller.datasource.vo.DataSourcePageQueryVO;
|
||||
import ai.chat2db.server.common.api.controller.request.CommonPageQueryRequest;
|
||||
import ai.chat2db.server.domain.api.enums.DataSourceKindEnum;
|
||||
import ai.chat2db.server.domain.api.model.DataSource;
|
||||
import ai.chat2db.server.domain.api.param.DataSourceCreateParam;
|
||||
import ai.chat2db.server.domain.api.param.DataSourcePageQueryParam;
|
||||
@ -17,7 +18,7 @@ import org.mapstruct.Mappings;
|
||||
*
|
||||
* @author Jiaju Zhuang
|
||||
*/
|
||||
@Mapper(componentModel = "spring")
|
||||
@Mapper(componentModel = "spring",imports = {DataSourceKindEnum.class})
|
||||
public abstract class DataSourceAdminConverter {
|
||||
|
||||
/**
|
||||
@ -51,7 +52,8 @@ public abstract class DataSourceAdminConverter {
|
||||
* @return
|
||||
*/
|
||||
@Mappings({
|
||||
@Mapping(source = "user", target = "userName")
|
||||
@Mapping(source = "user", target = "userName"),
|
||||
@Mapping(target = "kind", expression = "java(DataSourceKindEnum.SHARED.getCode())"),
|
||||
})
|
||||
public abstract DataSourceCreateParam createReq2param(DataSourceCreateRequest request);
|
||||
|
||||
|
@ -2,7 +2,6 @@ package ai.chat2db.server.admin.api.controller.datasource.request;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import ai.chat2db.server.tools.base.enums.EnvTypeEnum;
|
||||
import ai.chat2db.spi.config.DriverConfig;
|
||||
import ai.chat2db.spi.model.KeyValue;
|
||||
import ai.chat2db.spi.model.SSHInfo;
|
||||
@ -51,12 +50,6 @@ public class DataSourceCreateRequest {
|
||||
@NotNull
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* 环境类型
|
||||
* @see EnvTypeEnum
|
||||
*/
|
||||
private String envType;
|
||||
|
||||
/**
|
||||
* host
|
||||
*/
|
||||
@ -103,6 +96,11 @@ public class DataSourceCreateRequest {
|
||||
*/
|
||||
private DriverConfig driverConfig;
|
||||
|
||||
/**
|
||||
* 环境id
|
||||
*/
|
||||
@NotNull
|
||||
private Long environmentId;
|
||||
|
||||
|
||||
}
|
||||
|
@ -2,7 +2,6 @@ package ai.chat2db.server.admin.api.controller.datasource.request;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import ai.chat2db.server.tools.base.enums.EnvTypeEnum;
|
||||
import ai.chat2db.spi.config.DriverConfig;
|
||||
import ai.chat2db.spi.model.KeyValue;
|
||||
import ai.chat2db.spi.model.SSHInfo;
|
||||
@ -51,12 +50,11 @@ public class DataSourceUpdateRequest {
|
||||
|
||||
/**
|
||||
* 环境类型
|
||||
*
|
||||
* @see EnvTypeEnum
|
||||
*/
|
||||
private String envType;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* host
|
||||
*/
|
||||
@ -87,7 +85,6 @@ public class DataSourceUpdateRequest {
|
||||
*/
|
||||
private String driver;
|
||||
|
||||
|
||||
/**
|
||||
* jdbc版本
|
||||
*/
|
||||
@ -102,4 +99,10 @@ public class DataSourceUpdateRequest {
|
||||
* 驱动配置
|
||||
*/
|
||||
private DriverConfig driverConfig;
|
||||
|
||||
/**
|
||||
* 环境id
|
||||
*/
|
||||
@NotNull
|
||||
private Long environmentId;
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
|
||||
package ai.chat2db.server.admin.api.controller.datasource.vo;
|
||||
|
||||
import ai.chat2db.server.common.api.controller.vo.EnvironmentVO;
|
||||
import ai.chat2db.server.common.api.controller.vo.SimpleEnvironmentVO;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
@ -35,5 +35,5 @@ public class DataSourcePageQueryVO {
|
||||
/**
|
||||
* 环境
|
||||
*/
|
||||
private EnvironmentVO environment;
|
||||
private SimpleEnvironmentVO environment;
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
|
||||
package ai.chat2db.server.admin.api.controller.datasource.vo;
|
||||
|
||||
import ai.chat2db.server.common.api.controller.vo.EnvironmentVO;
|
||||
import ai.chat2db.server.common.api.controller.vo.SimpleEnvironmentVO;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
@ -35,5 +35,5 @@ public class SimpleDataSourceVO {
|
||||
/**
|
||||
* 环境
|
||||
*/
|
||||
private EnvironmentVO environment;
|
||||
private SimpleEnvironmentVO environment;
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
|
||||
package ai.chat2db.server.admin.api.controller.team;
|
||||
|
||||
import ai.chat2db.server.admin.api.controller.common.request.CommonPageQueryRequest;
|
||||
import ai.chat2db.server.common.api.controller.request.CommonPageQueryRequest;
|
||||
import ai.chat2db.server.admin.api.controller.team.request.TeamCreateRequest;
|
||||
import ai.chat2db.server.admin.api.controller.team.request.TeamUpdateRequest;
|
||||
import ai.chat2db.server.admin.api.controller.team.vo.TeamPageQueryVO;
|
||||
|
@ -1,7 +1,7 @@
|
||||
|
||||
package ai.chat2db.server.admin.api.controller.team;
|
||||
|
||||
import ai.chat2db.server.admin.api.controller.common.request.CommonPageQueryRequest;
|
||||
import ai.chat2db.server.common.api.controller.request.CommonPageQueryRequest;
|
||||
import ai.chat2db.server.admin.api.controller.team.request.TeamDataSourceBatchCreateRequest;
|
||||
import ai.chat2db.server.admin.api.controller.team.vo.TeamDataSourcePageQueryVO;
|
||||
import ai.chat2db.server.tools.base.wrapper.result.ActionResult;
|
||||
|
@ -1,7 +1,7 @@
|
||||
|
||||
package ai.chat2db.server.admin.api.controller.team;
|
||||
|
||||
import ai.chat2db.server.admin.api.controller.common.request.CommonPageQueryRequest;
|
||||
import ai.chat2db.server.common.api.controller.request.CommonPageQueryRequest;
|
||||
import ai.chat2db.server.admin.api.controller.team.request.TeamUserBatchCreateRequest;
|
||||
import ai.chat2db.server.admin.api.controller.team.vo.TeamUserPageQueryVO;
|
||||
import ai.chat2db.server.tools.base.wrapper.result.ActionResult;
|
||||
|
@ -1,7 +1,7 @@
|
||||
|
||||
package ai.chat2db.server.admin.api.controller.user;
|
||||
|
||||
import ai.chat2db.server.admin.api.controller.common.request.CommonPageQueryRequest;
|
||||
import ai.chat2db.server.common.api.controller.request.CommonPageQueryRequest;
|
||||
import ai.chat2db.server.admin.api.controller.user.converter.UserAdminConverter;
|
||||
import ai.chat2db.server.admin.api.controller.user.request.UserCreateRequest;
|
||||
import ai.chat2db.server.admin.api.controller.user.request.UserUpdateRequest;
|
||||
|
@ -1,7 +1,7 @@
|
||||
|
||||
package ai.chat2db.server.admin.api.controller.user;
|
||||
|
||||
import ai.chat2db.server.admin.api.controller.common.request.CommonPageQueryRequest;
|
||||
import ai.chat2db.server.common.api.controller.request.CommonPageQueryRequest;
|
||||
import ai.chat2db.server.admin.api.controller.user.request.UserTeamBatchCreateRequest;
|
||||
import ai.chat2db.server.admin.api.controller.user.vo.UserDataSourcePageQueryVO;
|
||||
import ai.chat2db.server.tools.base.wrapper.result.ActionResult;
|
||||
|
@ -1,7 +1,7 @@
|
||||
|
||||
package ai.chat2db.server.admin.api.controller.user;
|
||||
|
||||
import ai.chat2db.server.admin.api.controller.common.request.CommonPageQueryRequest;
|
||||
import ai.chat2db.server.common.api.controller.request.CommonPageQueryRequest;
|
||||
import ai.chat2db.server.admin.api.controller.user.request.UserTeamBatchCreateRequest;
|
||||
import ai.chat2db.server.admin.api.controller.user.vo.UserTeamPageQueryVO;
|
||||
import ai.chat2db.server.tools.base.wrapper.result.ActionResult;
|
||||
|
@ -22,6 +22,10 @@
|
||||
<groupId>ai.chat2db</groupId>
|
||||
<artifactId>chat2db-server-domain-api</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
|
@ -0,0 +1,42 @@
|
||||
|
||||
package ai.chat2db.server.common.api.controller;
|
||||
|
||||
import ai.chat2db.server.common.api.controller.converter.EnvironmentCommonConverter;
|
||||
import ai.chat2db.server.common.api.controller.vo.SimpleEnvironmentVO;
|
||||
import ai.chat2db.server.domain.api.param.EnvironmentPageQueryParam;
|
||||
import ai.chat2db.server.domain.api.service.EnvironmentService;
|
||||
import ai.chat2db.server.tools.base.wrapper.result.ListResult;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* Some general data queries
|
||||
*
|
||||
* @author Jiaju Zhuang
|
||||
*/
|
||||
@RequestMapping("/api/common")
|
||||
@RestController
|
||||
public class CommonCommonController {
|
||||
|
||||
@Resource
|
||||
private EnvironmentService environmentService;
|
||||
@Resource
|
||||
private EnvironmentCommonConverter environmentCommonConverter;
|
||||
|
||||
/**
|
||||
* Query all environments
|
||||
*
|
||||
* @return
|
||||
* @version 2.1.0
|
||||
*/
|
||||
@GetMapping("/environment/list_all")
|
||||
public ListResult<SimpleEnvironmentVO> environmentList() {
|
||||
EnvironmentPageQueryParam environmentPageQueryParam = new EnvironmentPageQueryParam();
|
||||
environmentPageQueryParam.setPageSize(Integer.MIN_VALUE);
|
||||
return ListResult.of(
|
||||
environmentCommonConverter.dto2vo(environmentService.pageQuery(environmentPageQueryParam).getData()));
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
package ai.chat2db.server.common.api.controller.converter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import ai.chat2db.server.common.api.controller.vo.SimpleEnvironmentVO;
|
||||
import ai.chat2db.server.domain.api.model.Environment;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.mapstruct.Mapper;
|
||||
|
||||
/**
|
||||
* converter
|
||||
*
|
||||
* @author Jiaju Zhuang
|
||||
*/
|
||||
@Slf4j
|
||||
@Mapper(componentModel = "spring")
|
||||
public abstract class EnvironmentCommonConverter {
|
||||
|
||||
|
||||
/**
|
||||
* convert
|
||||
*
|
||||
* @param list
|
||||
* @return
|
||||
*/
|
||||
public abstract List<SimpleEnvironmentVO> dto2vo(List<Environment> list);
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
|
||||
package ai.chat2db.server.admin.api.controller.common.request;
|
||||
package ai.chat2db.server.common.api.controller.request;
|
||||
|
||||
import ai.chat2db.server.tools.base.wrapper.request.PageQueryRequest;
|
||||
import lombok.Data;
|
@ -19,7 +19,7 @@ import lombok.experimental.SuperBuilder;
|
||||
@SuperBuilder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class EnvironmentVO implements Serializable {
|
||||
public class SimpleEnvironmentVO implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = EasyToolsConstant.SERIAL_VERSION_UID;
|
@ -198,7 +198,7 @@ public class DataSourceController {
|
||||
@PostMapping("/datasource/create")
|
||||
public DataResult<Long> create(@RequestBody DataSourceCreateRequest request) {
|
||||
DataSourceCreateParam param = dataSourceWebConverter.createReq2param(request);
|
||||
return dataSourceService.create(param);
|
||||
return dataSourceService.createWithPermission(param);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -210,7 +210,7 @@ public class DataSourceController {
|
||||
@RequestMapping(value = "/datasource/update",method = {RequestMethod.POST, RequestMethod.PUT})
|
||||
public ActionResult update(@RequestBody DataSourceUpdateRequest request) {
|
||||
DataSourceUpdateParam param = dataSourceWebConverter.updateReq2param(request);
|
||||
return dataSourceService.update(param);
|
||||
return dataSourceService.updateWithPermission(param);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -232,7 +232,7 @@ public class DataSourceController {
|
||||
*/
|
||||
@DeleteMapping("/datasource/{id}")
|
||||
public ActionResult delete(@PathVariable Long id) {
|
||||
return dataSourceService.delete(id);
|
||||
return dataSourceService.deleteWithPermission(id);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,42 +0,0 @@
|
||||
package ai.chat2db.server.web.api.controller.data.source;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import ai.chat2db.server.tools.base.enums.EnvTypeEnum;
|
||||
import ai.chat2db.server.tools.base.wrapper.result.ListResult;
|
||||
import ai.chat2db.server.web.api.controller.data.source.vo.EnvVO;
|
||||
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* 环境打标服务类
|
||||
*
|
||||
* @author moji
|
||||
* @version EnvController.java, v 0.1 2022年09月18日 14:04 moji Exp $
|
||||
* @date 2022/09/18
|
||||
*/
|
||||
@RequestMapping("/api/env")
|
||||
@RestController
|
||||
public class EnvController {
|
||||
|
||||
/**
|
||||
* 查询环境列表
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/list")
|
||||
public ListResult<EnvVO> list() {
|
||||
List<EnvVO> envVOS = Arrays.stream(EnvTypeEnum.values()).map(envTypeEnum -> {
|
||||
EnvVO envVO = new EnvVO();
|
||||
envVO.setCode(envTypeEnum.getCode());
|
||||
envVO.setName(envTypeEnum.getDescription());
|
||||
return envVO;
|
||||
}).collect(Collectors.toList());
|
||||
return ListResult.of(envVOS);
|
||||
}
|
||||
|
||||
}
|
@ -8,7 +8,6 @@ import jakarta.validation.constraints.NotNull;
|
||||
import ai.chat2db.spi.model.KeyValue;
|
||||
import ai.chat2db.spi.model.SSHInfo;
|
||||
import ai.chat2db.spi.model.SSLInfo;
|
||||
import ai.chat2db.server.tools.base.enums.EnvTypeEnum;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@ -53,12 +52,6 @@ public class DataSourceCreateRequest {
|
||||
@NotNull
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* 环境类型
|
||||
* @see EnvTypeEnum
|
||||
*/
|
||||
private String envType;
|
||||
|
||||
/**
|
||||
* host
|
||||
*/
|
||||
@ -106,5 +99,10 @@ public class DataSourceCreateRequest {
|
||||
private DriverConfig driverConfig;
|
||||
|
||||
|
||||
/**
|
||||
* 环境id
|
||||
*/
|
||||
@NotNull
|
||||
private Long environmentId;
|
||||
|
||||
}
|
||||
|
@ -8,7 +8,6 @@ import jakarta.validation.constraints.NotNull;
|
||||
import ai.chat2db.spi.model.KeyValue;
|
||||
import ai.chat2db.spi.model.SSHInfo;
|
||||
import ai.chat2db.spi.model.SSLInfo;
|
||||
import ai.chat2db.server.tools.base.enums.EnvTypeEnum;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
|
Reference in New Issue
Block a user