Merge branch 'team' of github.com:chat2db/Chat2DB into team

This commit is contained in:
Jerry Fan
2023-09-03 16:50:20 +08:00
76 changed files with 3181 additions and 7 deletions

View File

@@ -53,7 +53,7 @@ export default forwardRef(function CreateConnection(props: IProps, ref: Forwarde
backfillDataLoading: false,
sshTestLoading: false
});
const [envList, setEnvList] = useState<{value:string,label:string}[]>([]);
const [envList, setEnvList] = useState<{ value: string, label: string }[]>([]);
useEffect(() => {
@@ -200,7 +200,7 @@ export default forwardRef(function CreateConnection(props: IProps, ref: Forwarde
p.id = backfillData.id;
}
if (type === submitType.SAVE || type === submitType.UPDATE) {
if ((type === submitType.SAVE || type === submitType.UPDATE) && submit) {
submit?.(p);
return
}

View File

@@ -5,7 +5,7 @@ import ConnectionEdit from '@/components/ConnectionEdit';
import Iconfont from '@/components/Iconfont';
import connectionService from '@/service/connection';
import { DatabaseTypeCode, databaseMap, databaseTypeList } from '@/constants';
import { IDatabase, IConnectionDetails } from '@/typings';
import { IDatabase, IConnectionDetails, IEnvironmentVO } from '@/typings';
import { Button, Dropdown, Modal } from 'antd';
import { MoreOutlined } from '@ant-design/icons';
import styles from './index.less';
@@ -13,6 +13,7 @@ import { connect, history, Dispatch } from 'umi';
import { IConnectionModelType } from '@/models/connection';
import { IWorkspaceModelType } from '@/models/workspace';
interface IMenu {
key: number;
label: string;
@@ -20,16 +21,19 @@ interface IMenu {
meta: IConnectionDetails;
}
// interface IConnectionList {
// environment: 'dev' | 'test' | 'prod';
// connectionList: IMenu[];
// }
interface IProps {
connectionModel: IConnectionModelType['state'];
workspaceModel: IWorkspaceModelType['state'];
dispatch: any;
}
function Connections(props: IProps) {
const { connectionModel, workspaceModel, dispatch } = props;
const { connectionModel, dispatch } = props;
const { connectionList } = connectionModel;
const { curWorkspaceParams } = workspaceModel;
const volatileRef = useRef<any>();
const [curConnection, setCurConnection] = useState<Partial<IConnectionDetails>>({});

View File

@@ -5,4 +5,5 @@ export * from './database';
export * from './main';
export * from './theme';
export * from './tree';
export * from './setting'
export * from './setting'
export * from './team'

View File

@@ -0,0 +1,26 @@
package ai.chat2db.server.domain.api.param.datasource;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* 数据源关闭
*
* @author Jiaju Zhuang
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class DataSourceCloseParam {
/**
* 对应数据库存储的来源id
*/
@NotNull
private Long dataSourceId;
}

View File

@@ -0,0 +1,104 @@
package ai.chat2db.server.domain.api.param.datasource;
import java.util.List;
import ai.chat2db.spi.config.DriverConfig;
import ai.chat2db.spi.model.KeyValue;
import ai.chat2db.spi.model.SSHInfo;
import ai.chat2db.spi.model.SSLInfo;
import lombok.Data;
/**
* @author moji
* @version DataSourceCreateParam.java, v 0.1 2022年09月23日 15:23 moji Exp $
* @date 2022/09/23
*/
@Data
public class DataSourceCreateParam {
/**
* 别名
*/
private String alias;
/**
* 连接地址
*/
private String url;
/**
* 用户名
*/
private String userName;
/**
* 密码
*/
private String password;
/**
* 数据库类型
*/
private String type;
/**
* 环境类型
*/
private String envType;
/**
* host
*/
private String host;
/**
* port
*/
private String port;
/**
* ssh
*/
private SSHInfo ssh;
/**
* ssh
*/
private SSLInfo ssl;
/**
* sid
*/
private String sid;
/**
* driver
*/
private String driver;
/**
* jdbc版本
*/
private String jdbc;
/**
* 扩展信息
*/
private List<KeyValue> extendInfo;
/**
* 驱动配置
*/
private DriverConfig driverConfig;
/**
* 连接类型
*
* @see ai.chat2db.server.domain.api.enums.DataSourceKindEnum
*/
private String kind;
}

View File

@@ -0,0 +1,39 @@
package ai.chat2db.server.domain.api.param.datasource;
import ai.chat2db.server.tools.base.wrapper.param.OrderBy;
import ai.chat2db.server.tools.base.wrapper.param.PageQueryParam;
import lombok.Data;
import lombok.Getter;
/**
* @author moji
* @version DataSourcePageQueryParam.java, v 0.1 2022年09月23日 15:27 moji Exp $
* @date 2022/09/23
*/
@Data
public class DataSourcePageQueryParam extends PageQueryParam {
/**
* 搜索关键词
*/
private String searchKey;
/**
* 连接类型
*
* @see ai.chat2db.server.domain.api.enums.DataSourceKindEnum
*/
private String kind;
@Getter
public enum OrderCondition implements ai.chat2db.server.tools.base.wrapper.param.OrderCondition {
ID_DESC(OrderBy.desc("id")),
;
final OrderBy orderBy;
OrderCondition(OrderBy orderBy) {
this.orderBy = orderBy;
}
}
}

View File

@@ -0,0 +1,94 @@
package ai.chat2db.server.domain.api.param.datasource;
import java.util.List;
import ai.chat2db.spi.config.DriverConfig;
import ai.chat2db.spi.model.KeyValue;
import ai.chat2db.spi.model.SSHInfo;
import ai.chat2db.spi.model.SSLInfo;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
* @author moji
* @version ConnectionCreateRequest.java, v 0.1 2022年09月16日 14:23 moji Exp $
* @date 2022/09/16
*/
@Data
public class DataSourcePreConnectParam {
/**
* 连接别名
*/
private String alias;
/**
* 连接地址
*/
@NotNull
private String url;
/**
* 连接用户
*/
private String user;
/**
* 密码
*/
@NotNull
private String password;
/**
* 连接类型
*/
@NotNull
private String type;
/**
* host
*/
private String host;
/**
* port
*/
private String port;
/**
* ssh
*/
private SSHInfo ssh;
/**
* ssh
*/
private SSLInfo ssl;
/**
* sid
*/
private String sid;
/**
* driver
*/
private String driver;
/**
* jdbc版本
*/
private String jdbc;
/**
* 扩展信息
*/
private List<KeyValue> extendInfo;
/**
* 驱动配置
*/
private DriverConfig driverConfig;
}

View File

@@ -0,0 +1,23 @@
package ai.chat2db.server.domain.api.param.datasource;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* @author moji
* @version DataSourceSelector.java, v 0.1 2022年09月23日 15:28 moji Exp $
* @date 2022/09/23
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class DataSourceSelector {
/**
* 环境id
*/
private Boolean environment;
}

View File

@@ -0,0 +1,96 @@
package ai.chat2db.server.domain.api.param.datasource;
import java.util.List;
import ai.chat2db.spi.config.DriverConfig;
import ai.chat2db.spi.model.KeyValue;
import ai.chat2db.spi.model.SSHInfo;
import ai.chat2db.spi.model.SSLInfo;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* 数据源测试参数
*
* @author Jiaju Zhuang
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class DataSourceTestParam {
/**
* 数据库类型
*
* @see DbTypeEnum
*/
@NotNull
private String dbType;
/**
* 请求连接
*/
@NotNull
private String url;
/**
* 用户名
*/
private String username;
/**
* 密码
*/
private String password;
/**
* host
*/
private String host;
/**
* port
*/
private String port;
/**
* ssh
*/
private SSHInfo ssh;
/**
* ssh
*/
private SSLInfo ssl;
/**
* sid
*/
private String sid;
/**
* driver
*/
private String driver;
/**
* jdbc版本
*/
private String jdbc;
/**
* 扩展信息
*/
private List<KeyValue> extendInfo;
/**
* 驱动配置
*/
private DriverConfig driverConfig;
}

View File

@@ -0,0 +1,104 @@
package ai.chat2db.server.domain.api.param.datasource;
import java.util.List;
import ai.chat2db.spi.config.DriverConfig;
import ai.chat2db.spi.model.KeyValue;
import ai.chat2db.spi.model.SSHInfo;
import ai.chat2db.spi.model.SSLInfo;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
* @author moji
* @version DataSourceCreateParam.java, v 0.1 2022年09月23日 15:23 moji Exp $
* @date 2022/09/23
*/
@Data
public class DataSourceUpdateParam {
/**
* 主键
*/
@NotNull
private Long id;
/**
* 别名
*/
private String alias;
/**
* 连接地址
*/
private String url;
/**
* 用户名
*/
private String userName;
/**
* 密码
*/
private String password;
/**
* 数据库类型
*/
private String type;
/**
* 环境类型
*/
private String envType;
/**
* host
*/
private String host;
/**
* port
*/
private String port;
/**
* ssh
*/
private SSHInfo ssh;
/**
* ssh
*/
private SSLInfo ssl;
/**
* sid
*/
private String sid;
/**
* driver
*/
private String driver;
/**
* jdbc版本
*/
private String jdbc;
/**
* 扩展信息
*/
private List<KeyValue> extendInfo;
/**
* 驱动配置
*/
private DriverConfig driverConfig;
}

View File

@@ -0,0 +1,22 @@
package ai.chat2db.server.domain.api.param.datasource;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author jipengfei
* @version : DatabaseOperationParam.java
*/
@Data
@AllArgsConstructor
@Builder
@NoArgsConstructor
public class DatabaseOperationParam {
private String databaseName;
private String newDatabaseName;
}

View File

@@ -0,0 +1,41 @@
package ai.chat2db.server.domain.api.param.datasource;
import java.sql.Connection;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* 展示数据库信息
*
* @author Jiaju Zhuang
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class DatabaseQueryAllParam {
/**
* 对应数据库存储的来源id
*/
@NotNull
private Long dataSourceId;
/**
* if true, refresh the cache
*/
private boolean refresh;
/**
* Can be null, if null, use the default connection
*/
private Connection connection;
/**
* Can be null, if null, use the default dbType
*/
private String dbType;
}

View File

@@ -0,0 +1,29 @@
package ai.chat2db.server.domain.api.param.datasource.access;
import java.util.List;
import ai.chat2db.server.tools.base.wrapper.param.PageQueryParam;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
* Data Source Access
*
* @author Jiaju Zhuang
*/
@Data
public class DataSourceAccessBatchCreatParam extends PageQueryParam {
/**
* 数据源id
*/
@NotNull
private Long dataSourceId;
/**
* DataSource Access Object
*/
@NotNull
@NotEmpty
private List<DataSourceAccessObjectParam> accessObjectList;
}

View File

@@ -0,0 +1,40 @@
package ai.chat2db.server.domain.api.param.datasource.access;
import ai.chat2db.server.domain.api.enums.AccessObjectTypeEnum;
import ai.chat2db.server.tools.base.wrapper.param.PageQueryParam;
import lombok.Data;
/**
* Data Source Access
*
* @author Jiaju Zhuang
*/
@Data
public class DataSourceAccessComprehensivePageQueryParam extends PageQueryParam {
/**
* 数据源id
*/
private Long dataSourceId;
/**
* 授权类型
*
* @see AccessObjectTypeEnum
*/
private String accessObjectType;
/**
* 授权id,根据类型区分是用户还是团队
*/
private Long accessObjectId;
/**
* Query keywords for users or teams
*/
private String userOrTeamSearchKey;
/**
* Query keywords for data source
*/
private String dataSourceSearchKey;
}

View File

@@ -0,0 +1,39 @@
package ai.chat2db.server.domain.api.param.datasource.access;
import ai.chat2db.server.domain.api.enums.AccessObjectTypeEnum;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* Data Source Access
*
* @author Jiaju Zhuang
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class DataSourceAccessCreatParam {
/**
* 数据源id
*/
@NotNull
private Long dataSourceId;
/**
* 授权类型
*
* @see AccessObjectTypeEnum
*/
@NotNull
private String accessObjectType;
/**
* 授权id,根据类型区分是用户还是团队
*/
@NotNull
private Long accessObjectId;
}

View File

@@ -0,0 +1,41 @@
package ai.chat2db.server.domain.api.param.datasource.access;
import java.io.Serial;
import java.io.Serializable;
import ai.chat2db.server.domain.api.enums.AccessObjectTypeEnum;
import ai.chat2db.server.tools.base.constant.EasyToolsConstant;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* DataSource Access Object
* It could be a user or a team
*
* @author Jiaju Zhuang
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class DataSourceAccessObjectParam implements Serializable {
@Serial
private static final long serialVersionUID = EasyToolsConstant.SERIAL_VERSION_UID;
/**
* 授权id,根据类型区分是用户还是团队
*/
private Long id;
/**
* 授权类型
*
* @see AccessObjectTypeEnum
*/
private String type;
}

View File

@@ -0,0 +1,34 @@
package ai.chat2db.server.domain.api.param.datasource.access;
import ai.chat2db.server.domain.api.enums.AccessObjectTypeEnum;
import ai.chat2db.server.tools.base.wrapper.param.PageQueryParam;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
* Data Source Access
*
* @author Jiaju Zhuang
*/
@Data
public class DataSourceAccessPageQueryParam extends PageQueryParam {
/**
* 数据源id
*/
@NotNull
private Long dataSourceId;
/**
* 授权类型
*
* @see AccessObjectTypeEnum
*/
@NotNull
private String accessObjectType;
/**
* 授权id,根据类型区分是用户还是团队
*/
@NotNull
private Long accessObjectId;
}

View File

@@ -0,0 +1,34 @@
package ai.chat2db.server.domain.api.param.datasource.access;
import ai.chat2db.server.domain.api.param.datasource.DataSourceSelector;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* slecetor
*
* @author Jiaju Zhuang
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class DataSourceAccessSelector {
/**
* 授权对象
*/
private Boolean accessObject;
/**
* 数据源
*/
private Boolean dataSource;
/**
* 数据源
*/
private DataSourceSelector dataSourceSelector;
}

View File

@@ -0,0 +1,46 @@
package ai.chat2db.server.domain.api.param.team;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
* create
*
* @author Jiaju Zhuang
*/
@Data
public class TeamCreateParam {
/**
* 团队编码
*/
@NotNull
private String code;
/**
* 团队名称
*/
@NotNull
private String name;
/**
* 团队状态
*
* @see ai.chat2db.server.domain.api.enums.ValidStatusEnum
*/
@NotNull
private String status;
/**
* 角色编码
*
* @see ai.chat2db.server.domain.api.enums.RoleCodeEnum
*/
@NotNull
private String roleCode;
/**
* 团队描述
*/
private String description;
}

View File

@@ -0,0 +1,32 @@
package ai.chat2db.server.domain.api.param.team;
import ai.chat2db.server.tools.base.wrapper.param.OrderBy;
import ai.chat2db.server.tools.base.wrapper.param.PageQueryParam;
import lombok.Data;
import lombok.Getter;
/**
* page query
*
* @author Jiaju Zhuang
*/
@Data
public class TeamPageQueryParam extends PageQueryParam {
/**
* searchKey
*/
private String searchKey;
@Getter
public enum OrderCondition implements ai.chat2db.server.tools.base.wrapper.param.OrderCondition {
ID_DESC(OrderBy.desc("id")),
;
final OrderBy orderBy;
OrderCondition(OrderBy orderBy) {
this.orderBy = orderBy;
}
}
}

View File

@@ -0,0 +1,23 @@
package ai.chat2db.server.domain.api.param.team;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* select
*
* @author Jiaju Zhuang
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class TeamSelector {
/**
* 修改人用户
*/
private Boolean modifiedUser;
}

View File

@@ -0,0 +1,42 @@
package ai.chat2db.server.domain.api.param.team;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
* update
*
* @author Jiaju Zhuang
*/
@Data
public class TeamUpdateParam {
/**
* 主键
*/
@NotNull
private Long id;
/**
* 团队名称
*/
private String name;
/**
* 团队状态
*
* @see ai.chat2db.server.domain.api.enums.ValidStatusEnum
*/
private String status;
/**
* 角色编码
*
* @see ai.chat2db.server.domain.api.enums.RoleCodeEnum
*/
private String roleCode;
/**
* 团队描述
*/
private String description;
}

View File

@@ -0,0 +1,40 @@
package ai.chat2db.server.domain.api.param.team.user;
import ai.chat2db.server.tools.base.wrapper.param.PageQueryParam;
import lombok.Data;
/**
* Team User
*
* @author Jiaju Zhuang
*/
@Data
public class TeamUserComprehensivePageQueryParam extends PageQueryParam {
/**
* 团队id
*/
private Long teamId;
/**
* 用户id
*/
private Long userId;
/**
* 团队角色code
*
* @see ai.chat2db.server.domain.api.enums.RoleCodeEnum
*/
private String teamRoleCode;
/**
* Query keywords for team
*/
private String teamSearchKey;
/**
* Query keywords for user
*/
private String userSearchKey;
}

View File

@@ -0,0 +1,29 @@
package ai.chat2db.server.domain.api.param.team.user;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* Team User
*
* @author Jiaju Zhuang
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class TeamUserCreatParam {
/**
* team id
*/
@NotNull
private Long teamId;
/**
* user id
*/
private Long userId;
}

View File

@@ -0,0 +1,27 @@
package ai.chat2db.server.domain.api.param.team.user;
import ai.chat2db.server.tools.base.wrapper.param.PageQueryParam;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
* Team User
*
* @author Jiaju Zhuang
*/
@Data
public class TeamUserPageQueryParam extends PageQueryParam {
/**
* 团队id
*/
@NotNull
private Long teamId;
/**
* 用户id
*/
@NotNull
private Long userId;
}

View File

@@ -0,0 +1,27 @@
package ai.chat2db.server.domain.api.param.team.user;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* select
*
* @author Jiaju Zhuang
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class TeamUserSelector {
/**
* 团队
*/
private Boolean team;
/**
* 用户
*/
private Boolean user;
}

View File

@@ -0,0 +1,54 @@
package ai.chat2db.server.domain.api.param.user;
import ai.chat2db.server.domain.api.enums.RoleCodeEnum;
import ai.chat2db.server.domain.api.enums.ValidStatusEnum;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
* create
*
* @author Jiaju Zhuang
*/
@Data
public class UserCreateParam {
/**
* 用户名
*/
@NotNull
private String userName;
/**
* 密码
*/
@NotNull
private String password;
/**
* 昵称
*/
@NotNull
private String nickName;
/**
* 邮箱
*/
@NotNull
private String email;
/**
* 角色编码
*
* @see RoleCodeEnum
*/
@NotNull
private String roleCode;
/**
* 用户状态
*
* @see ValidStatusEnum
*/
@NotNull
private String status;
}

View File

@@ -0,0 +1,38 @@
package ai.chat2db.server.domain.api.param.user;
import ai.chat2db.server.tools.base.wrapper.param.OrderBy;
import ai.chat2db.server.tools.base.wrapper.param.PageQueryParam;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* * page query
*
* @author Jiaju Zhuang
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class UserPageQueryParam extends PageQueryParam {
/**
* searchKey
*/
private String searchKey;
@Getter
public enum OrderCondition implements ai.chat2db.server.tools.base.wrapper.param.OrderCondition {
ID_DESC(OrderBy.desc("id")),
;
final OrderBy orderBy;
OrderCondition(OrderBy orderBy) {
this.orderBy = orderBy;
}
}
}

View File

@@ -0,0 +1,23 @@
package ai.chat2db.server.domain.api.param.user;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* select
*
* @author Jiaju Zhuang
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class UserSelector {
/**
* 修改人用户
*/
private Boolean modifiedUser;
}

View File

@@ -0,0 +1,54 @@
package ai.chat2db.server.domain.api.param.user;
import ai.chat2db.server.domain.api.enums.RoleCodeEnum;
import ai.chat2db.server.domain.api.enums.ValidStatusEnum;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
* create
*
* @author Jiaju Zhuang
*/
@Data
public class UserUpdateParam {
/**
* 主键
*/
@NotNull
private Long id;
/**
* 密码
*/
@NotNull
private String password;
/**
* 昵称
*/
@NotNull
private String nickName;
/**
* 邮箱
*/
@NotNull
private String email;
/**
* 角色编码
*
* @see RoleCodeEnum
*/
private String roleCode;
/**
* 用户状态
*
* @see ValidStatusEnum
*/
@NotNull
private String status;
}

View File

@@ -0,0 +1,22 @@
package ai.chat2db.server.start.test.dto;
import java.io.Serial;
import java.io.Serializable;
import ai.chat2db.server.tools.base.constant.EasyToolsConstant;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class TestDTO implements Serializable {
@Serial
private static final long serialVersionUID = EasyToolsConstant.SERIAL_VERSION_UID;
private String name;
}

View File

@@ -0,0 +1,34 @@
package ai.chat2db.server.tools.common.enums;
import ai.chat2db.server.tools.base.enums.BaseEnum;
import lombok.Getter;
/**
* model
*
* @author Jiaju Zhuang
*/
@Getter
public enum ModeEnum implements BaseEnum<String> {
/**
* DESKTOP
*/
DESKTOP("DESKTOP"),
/**
* WEB
*/
WEB("WEB"),
;
final String description;
ModeEnum(String description) {
this.description = description;
}
@Override
public String getCode() {
return this.name();
}
}

View File

@@ -0,0 +1,27 @@
package ai.chat2db.server.admin.api.controller.common.request;
import ai.chat2db.server.domain.api.enums.AccessObjectTypeEnum;
import ai.chat2db.server.tools.base.wrapper.request.PageQueryRequest;
import lombok.Data;
/**
* Common pagination query
*
* @author Jiaju Zhuang
*/
@Data
public class TeamUserPageQueryRequest extends PageQueryRequest {
/**
* 授权类型
*
* @see AccessObjectTypeEnum
*/
private String type;
/**
* searchKey
*/
private String searchKey;
}

View File

@@ -0,0 +1,50 @@
package ai.chat2db.server.admin.api.controller.common.vo;
import java.io.Serial;
import java.io.Serializable;
import ai.chat2db.server.domain.api.enums.AccessObjectTypeEnum;
import ai.chat2db.server.tools.base.constant.EasyToolsConstant;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* DataSource Access Object
* It could be a user or a team
*
* @author Jiaju Zhuang
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class TeamUserListVO implements Serializable {
@Serial
private static final long serialVersionUID = EasyToolsConstant.SERIAL_VERSION_UID;
/**
* 授权id,根据类型区分是用户还是团队
*/
private Long id;
/**
* 授权类型
*
* @see AccessObjectTypeEnum
*/
private String type;
/**
* The name of the code that belongs to the authorization type, such as user account, team code
*/
private String code;
/**
* Code that belongs to the authorization type, such as user name, team name
*/
private String name;
}

View File

@@ -0,0 +1,50 @@
package ai.chat2db.server.admin.api.controller.datasource.converter;
import ai.chat2db.server.admin.api.controller.datasource.request.DataSourceAccessBatchCreateRequest;
import ai.chat2db.server.admin.api.controller.datasource.request.DataSourceAccessPageQueryRequest;
import ai.chat2db.server.admin.api.controller.datasource.vo.DataSourceAccessPageQueryVO;
import ai.chat2db.server.domain.api.enums.DataSourceKindEnum;
import ai.chat2db.server.domain.api.model.DataSourceAccess;
import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessBatchCreatParam;
import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessComprehensivePageQueryParam;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
/**
* converter
*
* @author Jiaju Zhuang
*/
@Mapper(componentModel = "spring", imports = {DataSourceKindEnum.class})
public abstract class DataSourceAccessAdminConverter {
/**
* convert
*
* @param request
* @return
*/
@Mappings({
@Mapping(source = "searchKey", target = "userOrTeamSearchKey"),
@Mapping(target = "enableReturnCount", expression = "java(true)"),
})
public abstract DataSourceAccessComprehensivePageQueryParam request2param(DataSourceAccessPageQueryRequest request);
/**
* convert
*
* @param request
* @return
*/
public abstract DataSourceAccessBatchCreatParam request2param(DataSourceAccessBatchCreateRequest request);
/**
* conversion
*
* @param dto
* @return
*/
public abstract DataSourceAccessPageQueryVO dto2vo(DataSourceAccess dto);
}

View File

@@ -0,0 +1,76 @@
package ai.chat2db.server.admin.api.controller.datasource.converter;
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.datasource.DataSourceCreateParam;
import ai.chat2db.server.domain.api.param.datasource.DataSourcePageQueryParam;
import ai.chat2db.server.domain.api.param.datasource.DataSourceUpdateParam;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
/**
* converter
*
* @author Jiaju Zhuang
*/
@Mapper(componentModel = "spring",imports = {DataSourceKindEnum.class})
public abstract class DataSourceAdminConverter {
/**
* conversion
*
* @param request
* @return
*/
@Mappings({
@Mapping(target = "enableReturnCount", expression = "java(true)"),
})
public abstract DataSourcePageQueryParam request2param(CommonPageQueryRequest request);
/**
* conversion
*
* @param request
* @return
*/
@Mappings({
@Mapping(target = "enableReturnCount", expression = "java(true)"),
})
public abstract DataSourcePageQueryParam request2paramAccess(CommonPageQueryRequest request);
/**
* conversion
*
* @param dto
* @return
*/
public abstract DataSourcePageQueryVO dto2vo(DataSource dto);
/**
* 参数转换
*
* @param request
* @return
*/
@Mappings({
@Mapping(source = "user", target = "userName"),
@Mapping(target = "kind", expression = "java(DataSourceKindEnum.SHARED.getCode())"),
})
public abstract DataSourceCreateParam createReq2param(DataSourceCreateRequest request);
/**
* 参数转换
*
* @param request
* @return
*/
@Mappings({
@Mapping(source = "user", target = "userName")
})
public abstract DataSourceUpdateParam updateReq2param(DataSourceUpdateRequest request);
}

View File

@@ -0,0 +1,33 @@
package ai.chat2db.server.admin.api.controller.datasource.request;
import java.util.List;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* create
*
* @author Jiaju Zhuang
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class DataSourceAccessBatchCreateRequest {
/**
* 数据源id
*/
@NotNull
private Long dataSourceId;
/**
* DataSource Access Object
*/
@NotNull
private List<DataSourceAccessObjectRequest> accessObjectList;
}

View File

@@ -0,0 +1,41 @@
package ai.chat2db.server.admin.api.controller.datasource.request;
import java.io.Serial;
import java.io.Serializable;
import ai.chat2db.server.domain.api.enums.AccessObjectTypeEnum;
import ai.chat2db.server.tools.base.constant.EasyToolsConstant;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* DataSource Access Object
* It could be a user or a team
*
* @author Jiaju Zhuang
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class DataSourceAccessObjectRequest implements Serializable {
@Serial
private static final long serialVersionUID = EasyToolsConstant.SERIAL_VERSION_UID;
/**
* 授权id,根据类型区分是用户还是团队
*/
private Long id;
/**
* 授权类型
*
* @see AccessObjectTypeEnum
*/
private String type;
}

View File

@@ -0,0 +1,26 @@
package ai.chat2db.server.admin.api.controller.datasource.request;
import ai.chat2db.server.tools.base.wrapper.request.PageQueryRequest;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
* Common pagination query
*
* @author Jiaju Zhuang
*/
@Data
public class DataSourceAccessPageQueryRequest extends PageQueryRequest {
/**
* 数据源id
*/
@NotNull
private Long dataSourceId;
/**
* searchKey
*/
private String searchKey;
}

View File

@@ -0,0 +1,19 @@
package ai.chat2db.server.admin.api.controller.datasource.request;
import lombok.Data;
/**
* @author moji
* @version ConnectionCloneRequest.java, v 0.1 2022年09月16日 14:23 moji Exp $
* @date 2022/09/16
*/
@Data
public class DataSourceCloneRequest {
/**
* 主键id
*/
private Long id;
}

View File

@@ -0,0 +1,106 @@
package ai.chat2db.server.admin.api.controller.datasource.request;
import java.util.List;
import ai.chat2db.spi.config.DriverConfig;
import ai.chat2db.spi.model.KeyValue;
import ai.chat2db.spi.model.SSHInfo;
import ai.chat2db.spi.model.SSLInfo;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
* @author moji
* @version ConnectionCreateRequest.java, v 0.1 2022年09月16日 14:23 moji Exp $
* @date 2022/09/16
*/
@Data
public class DataSourceCreateRequest {
/**
* 连接别名
*/
private String alias;
/**
* 连接地址
*/
@NotNull
private String url;
/**
* 连接用户名
*/
private String user;
/**
* 密码
*/
@NotNull
private String password;
/**
* 认证类型
*/
private String authenticationType;
/**
* 连接类型
*/
@NotNull
private String type;
/**
* host
*/
private String host;
/**
* port
*/
private String port;
/**
* ssh
*/
private SSHInfo ssh;
/**
* ssh
*/
private SSLInfo ssl;
/**
* sid
*/
private String sid;
/**
* driver
*/
private String driver;
/**
* jdbc版本
*/
private String jdbc;
/**
* 扩展信息
*/
private List<KeyValue> extendInfo;
/**
* 驱动配置
*/
private DriverConfig driverConfig;
/**
* 环境id
*/
@NotNull
private Long environmentId;
}

View File

@@ -0,0 +1,108 @@
package ai.chat2db.server.admin.api.controller.datasource.request;
import java.util.List;
import ai.chat2db.spi.config.DriverConfig;
import ai.chat2db.spi.model.KeyValue;
import ai.chat2db.spi.model.SSHInfo;
import ai.chat2db.spi.model.SSLInfo;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
* @author moji
* @version ConnectionCreateRequest.java, v 0.1 2022年09月16日 14:23 moji Exp $
* @date 2022/09/16
*/
@Data
public class DataSourceUpdateRequest {
/**
* 主键id
*/
@NotNull
private Long id;
/**
* 连接别名
*/
private String alias;
/**
* 连接地址
*/
private String url;
/**
* 连接用户
*/
private String user;
/**
* 密码
*/
private String password;
/**
* 连接类型
*/
private String type;
/**
* 环境类型
*
* @see EnvTypeEnum
*/
private String envType;
/**
* host
*/
private String host;
/**
* port
*/
private String port;
/**
* ssh
*/
private SSHInfo ssh;
/**
* ssh
*/
private SSLInfo ssl;
/**
* sid
*/
private String sid;
/**
* driver
*/
private String driver;
/**
* jdbc版本
*/
private String jdbc;
/**
* 扩展信息
*/
private List<KeyValue> extendInfo;
/**
* 驱动配置
*/
private DriverConfig driverConfig;
/**
* 环境id
*/
@NotNull
private Long environmentId;
}

View File

@@ -0,0 +1,50 @@
package ai.chat2db.server.admin.api.controller.datasource.vo;
import java.io.Serial;
import java.io.Serializable;
import ai.chat2db.server.domain.api.enums.AccessObjectTypeEnum;
import ai.chat2db.server.tools.base.constant.EasyToolsConstant;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* DataSource Access Object
* It could be a user or a team
*
* @author Jiaju Zhuang
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class DataSourceAccessObjectVO implements Serializable {
@Serial
private static final long serialVersionUID = EasyToolsConstant.SERIAL_VERSION_UID;
/**
* 授权id,根据类型区分是用户还是团队
*/
private Long id;
/**
* 授权类型
*
* @see AccessObjectTypeEnum
*/
private String type;
/**
* The name of the code that belongs to the authorization type, such as user account, team code
*/
private String code;
/**
* Code that belongs to the authorization type, such as user name, team name
*/
private String name;
}

View File

@@ -0,0 +1,40 @@
package ai.chat2db.server.admin.api.controller.datasource.vo;
import ai.chat2db.server.domain.api.enums.AccessObjectTypeEnum;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
* Pagination query
*
* @author Jiaju Zhuang
*/
@Data
public class DataSourceAccessPageQueryVO {
/**
* 主键
*/
@NotNull
private Long id;
/**
* 授权类型
*
* @see AccessObjectTypeEnum
*/
@NotNull
private String accessObjectType;
/**
* 授权id,根据类型区分是用户还是团队
*/
@NotNull
private Long accessObjectId;
/**
* 授权对象
*/
@NotNull
private DataSourceAccessObjectVO accessObject;
}

View File

@@ -0,0 +1,39 @@
package ai.chat2db.server.admin.api.controller.datasource.vo;
import ai.chat2db.server.common.api.controller.vo.SimpleEnvironmentVO;
import lombok.Data;
/**
* Pagination query
*
* @author Jiaju Zhuang
*/
@Data
public class DataSourcePageQueryVO {
/**
* 主键id
*/
private Long id;
/**
* 连接别名
*/
private String alias;
/**
* 连接地址
*/
private String url;
/**
* 环境id
*/
private Long environmentId;
/**
* 环境
*/
private SimpleEnvironmentVO environment;
}

View File

@@ -0,0 +1,39 @@
package ai.chat2db.server.admin.api.controller.datasource.vo;
import ai.chat2db.server.common.api.controller.vo.SimpleEnvironmentVO;
import lombok.Data;
/**
* Data Source
*
* @author Jiaju Zhuang
*/
@Data
public class SimpleDataSourceVO {
/**
* 主键id
*/
private Long id;
/**
* 连接别名
*/
private String alias;
/**
* 连接地址
*/
private String url;
/**
* 环境id
*/
private Long environmentId;
/**
* 环境
*/
private SimpleEnvironmentVO environment;
}

View File

@@ -0,0 +1,62 @@
package ai.chat2db.server.admin.api.controller.team.converter;
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;
import ai.chat2db.server.common.api.controller.request.CommonPageQueryRequest;
import ai.chat2db.server.domain.api.enums.DataSourceKindEnum;
import ai.chat2db.server.domain.api.model.Team;
import ai.chat2db.server.domain.api.param.team.TeamCreateParam;
import ai.chat2db.server.domain.api.param.team.TeamPageQueryParam;
import ai.chat2db.server.domain.api.param.team.TeamUpdateParam;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
/**
* converter
*
* @author Jiaju Zhuang
*/
@Mapper(componentModel = "spring",imports = {DataSourceKindEnum.class})
public abstract class TeamAdminConverter {
/**
* conversion
*
* @param request
* @return
*/
@Mappings({
@Mapping(target = "enableReturnCount", expression = "java(true)"),
})
public abstract TeamPageQueryParam request2param(CommonPageQueryRequest request);
/**
* conversion
*
* @param dto
* @return
*/
public abstract TeamPageQueryVO dto2vo(Team dto);
/**
* conversion
*
* @param request
* @return
*/
public abstract TeamCreateParam request2param(TeamCreateRequest request);
/**
* conversion
*
* @param request
* @return
*/
public abstract TeamUpdateParam request2param(TeamUpdateRequest request);
}

View File

@@ -0,0 +1,56 @@
package ai.chat2db.server.admin.api.controller.team.converter;
import ai.chat2db.server.admin.api.controller.datasource.request.DataSourceAccessBatchCreateRequest;
import ai.chat2db.server.admin.api.controller.team.request.TeamPageCommonQueryRequest;
import ai.chat2db.server.admin.api.controller.team.vo.TeamDataSourcePageQueryVO;
import ai.chat2db.server.domain.api.enums.AccessObjectTypeEnum;
import ai.chat2db.server.domain.api.enums.DataSourceKindEnum;
import ai.chat2db.server.domain.api.model.DataSourceAccess;
import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessBatchCreatParam;
import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessComprehensivePageQueryParam;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
/**
* converter
*
* @author Jiaju Zhuang
*/
@Mapper(componentModel = "spring", imports = {DataSourceKindEnum.class, AccessObjectTypeEnum.class})
public abstract class TeamDataSourcesAdminConverter {
/**
* convert
*
* @param request
* @return
*/
@Mappings({
@Mapping(target = "accessObjectId", source = "teamId"),
@Mapping(target = "accessObjectType", expression = "java(AccessObjectTypeEnum.TEAM.name())"),
@Mapping(source = "searchKey", target = "dataSourceSearchKey"),
@Mapping(target = "enableReturnCount", expression = "java(true)"),
})
public abstract DataSourceAccessComprehensivePageQueryParam request2param(TeamPageCommonQueryRequest request);
/**
* convert
*
* @param request
* @return
*/
public abstract DataSourceAccessBatchCreatParam request2param(DataSourceAccessBatchCreateRequest request);
/**
* conversion
*
* @param dto
* @return
*/
@Mappings({
@Mapping(target = "teamId", source = "accessObjectId"),
})
public abstract TeamDataSourcePageQueryVO dto2vo(DataSourceAccess dto);
}

View File

@@ -0,0 +1,49 @@
package ai.chat2db.server.admin.api.controller.team.converter;
import ai.chat2db.server.admin.api.controller.datasource.request.DataSourceAccessBatchCreateRequest;
import ai.chat2db.server.admin.api.controller.team.request.TeamPageCommonQueryRequest;
import ai.chat2db.server.admin.api.controller.team.vo.TeamUserPageQueryVO;
import ai.chat2db.server.domain.api.model.TeamUser;
import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessBatchCreatParam;
import ai.chat2db.server.domain.api.param.team.user.TeamUserComprehensivePageQueryParam;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
/**
* converter
*
* @author Jiaju Zhuang
*/
@Mapper(componentModel = "spring")
public abstract class TeamUserAdminConverter {
/**
* convert
*
* @param request
* @return
*/
@Mappings({
@Mapping(source = "searchKey", target = "userSearchKey"),
@Mapping(target = "enableReturnCount", expression = "java(true)"),
})
public abstract TeamUserComprehensivePageQueryParam request2param(TeamPageCommonQueryRequest request);
/**
* convert
*
* @param request
* @return
*/
public abstract DataSourceAccessBatchCreatParam request2param(DataSourceAccessBatchCreateRequest request);
/**
* conversion
*
* @param dto
* @return
*/
public abstract TeamUserPageQueryVO dto2vo(TeamUser dto);
}

View File

@@ -0,0 +1,38 @@
package ai.chat2db.server.admin.api.controller.team.request;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
* create
*
* @author Jiaju Zhuang
*/
@Data
public class TeamCreateRequest {
/**
* 团队编码
*/
@NotNull
private String code;
/**
* 团队名称
*/
@NotNull
private String name;
/**
* 团队状态
*
* @see ai.chat2db.server.domain.api.enums.ValidStatusEnum
*/
@NotNull
private String status;
/**
* 团队描述
*/
private String description;
}

View File

@@ -0,0 +1,34 @@
package ai.chat2db.server.admin.api.controller.team.request;
import java.util.List;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* create
*
* @author Jiaju Zhuang
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class TeamDataSourceBatchCreateRequest {
/**
* team id
*/
@NotNull
private Long teamId;
/**
* Data Source id list
*/
@NotNull
private List<Long> dataSourceIdList;
}

View File

@@ -0,0 +1,25 @@
package ai.chat2db.server.admin.api.controller.team.request;
import ai.chat2db.server.tools.base.wrapper.request.PageQueryRequest;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
* Pagination query
*
* @author Jiaju Zhuang
*/
@Data
public class TeamPageCommonQueryRequest extends PageQueryRequest {
/**
* team id
*/
@NotNull
private Long teamId;
/**
* searchKey
*/
private String searchKey;
}

View File

@@ -0,0 +1,45 @@
package ai.chat2db.server.admin.api.controller.team.request;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
* update
*
* @author Jiaju Zhuang
*/
@Data
public class TeamUpdateRequest {
/**
* 主键
*/
@NotNull
private Long id;
/**
* 团队名称
*/
@NotNull
private String name;
/**
* 团队状态
*
* @see ai.chat2db.server.domain.api.enums.ValidStatusEnum
*/
@NotNull
private String status;
/**
* 角色编码
*
* @see ai.chat2db.server.domain.api.enums.RoleCodeEnum
*/
@NotNull
private String roleCode;
/**
* 团队描述
*/
private String description;
}

View File

@@ -0,0 +1,33 @@
package ai.chat2db.server.admin.api.controller.team.request;
import java.util.List;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* create
*
* @author Jiaju Zhuang
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class TeamUserBatchCreateRequest {
/**
* team id
*/
@NotNull
private Long teamId;
/**
* user id list
*/
@NotNull
private List<Long> userIdList;
}

View File

@@ -0,0 +1,37 @@
package ai.chat2db.server.admin.api.controller.team.vo;
import lombok.Data;
/**
* team
*
* @author Jiaju Zhuang
*/
@Data
public class SimpleTeamVO {
/**
* 主键
*/
private Long id;
/**
* 团队编码
*/
private String code;
/**
* 团队名称
*/
private String name;
/**
* 团队状态
*
* @see ai.chat2db.server.domain.api.enums.ValidStatusEnum
*/
private String status;
}

View File

@@ -0,0 +1,31 @@
package ai.chat2db.server.admin.api.controller.team.vo;
import ai.chat2db.server.admin.api.controller.datasource.vo.SimpleDataSourceVO;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
* Pagination query
*
* @author Jiaju Zhuang
*/
@Data
public class TeamDataSourcePageQueryVO {
/**
* 主键
*/
@NotNull
private Long id;
/**
* team id
*/
private Long teamId;
/**
* Data Source
*/
private SimpleDataSourceVO dataSource;
}

View File

@@ -0,0 +1,57 @@
package ai.chat2db.server.admin.api.controller.team.vo;
import java.util.Date;
import ai.chat2db.server.common.api.controller.vo.SimpleUserVO;
import lombok.Data;
/**
* Pagination query
*
* @author Jiaju Zhuang
*/
@Data
public class TeamPageQueryVO {
/**
* 主键
*/
private Long id;
/**
* 团队编码
*/
private String code;
/**
* 团队名称
*/
private String name;
/**
* 团队状态
*
* @see ai.chat2db.server.domain.api.enums.ValidStatusEnum
*/
private String status;
/**
* 团队描述
*/
private String description;
/**
* 修改时间
*/
private Date gmtModified;
/**
* 修改人用户id
*/
private Long modifiedUserId;
/**
* 修改人用户
*/
private SimpleUserVO modifiedUser;
}

View File

@@ -0,0 +1,28 @@
package ai.chat2db.server.admin.api.controller.team.vo;
import ai.chat2db.server.admin.api.controller.user.vo.SimpleUserVO;
import lombok.Data;
/**
* Pagination query
*
* @author Jiaju Zhuang
*/
@Data
public class TeamUserPageQueryVO {
/**
* 主键
*/
private Long id;
/**
* team id
*/
private Long teamId;
/**
* user
*/
private SimpleUserVO user;
}

View File

@@ -0,0 +1,57 @@
package ai.chat2db.server.admin.api.controller.user.converter;
import ai.chat2db.server.admin.api.controller.user.request.UserCreateRequest;
import ai.chat2db.server.admin.api.controller.user.request.UserUpdateRequest;
import ai.chat2db.server.admin.api.controller.user.vo.UserPageQueryVO;
import ai.chat2db.server.common.api.controller.request.CommonPageQueryRequest;
import ai.chat2db.server.domain.api.model.User;
import ai.chat2db.server.domain.api.param.user.UserCreateParam;
import ai.chat2db.server.domain.api.param.user.UserPageQueryParam;
import ai.chat2db.server.domain.api.param.user.UserUpdateParam;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
/**
* converter
*
* @author Jiaju Zhuang
*/
@Mapper(componentModel = "spring")
public abstract class UserAdminConverter {
/**
* conversion
*
* @param request
* @return
*/
@Mappings({
@Mapping(target = "enableReturnCount", expression = "java(true)"),
})
public abstract UserPageQueryParam request2param(CommonPageQueryRequest request);
/**
* conversion
*
* @param dto
* @return
*/
public abstract UserPageQueryVO dto2vo(User dto);
/**
* conversion
*
* @param request
* @return
*/
public abstract UserCreateParam request2param(UserCreateRequest request);
/**
* conversion
*
* @param request
* @return
*/
public abstract UserUpdateParam request2param(UserUpdateRequest request);
}

View File

@@ -0,0 +1,56 @@
package ai.chat2db.server.admin.api.controller.user.converter;
import ai.chat2db.server.admin.api.controller.datasource.request.DataSourceAccessBatchCreateRequest;
import ai.chat2db.server.admin.api.controller.user.request.UserPageCommonQueryRequest;
import ai.chat2db.server.admin.api.controller.user.vo.UserDataSourcePageQueryVO;
import ai.chat2db.server.domain.api.enums.AccessObjectTypeEnum;
import ai.chat2db.server.domain.api.enums.DataSourceKindEnum;
import ai.chat2db.server.domain.api.model.DataSourceAccess;
import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessBatchCreatParam;
import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessComprehensivePageQueryParam;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
/**
* converter
*
* @author Jiaju Zhuang
*/
@Mapper(componentModel = "spring", imports = {DataSourceKindEnum.class, AccessObjectTypeEnum.class})
public abstract class UserDataSourcesAdminConverter {
/**
* convert
*
* @param request
* @return
*/
@Mappings({
@Mapping(source = "userId", target = "accessObjectId"),
@Mapping(target = "accessObjectType", expression = "java(AccessObjectTypeEnum.USER.name())"),
@Mapping(source = "searchKey", target = "userOrTeamSearchKey"),
@Mapping(target = "enableReturnCount", expression = "java(true)"),
})
public abstract DataSourceAccessComprehensivePageQueryParam request2param(UserPageCommonQueryRequest request);
/**
* convert
*
* @param request
* @return
*/
public abstract DataSourceAccessBatchCreatParam request2param(DataSourceAccessBatchCreateRequest request);
/**
* conversion
*
* @param dto
* @return
*/
@Mappings({
@Mapping(target = "userId", source = "accessObjectId"),
})
public abstract UserDataSourcePageQueryVO dto2vo(DataSourceAccess dto);
}

View File

@@ -0,0 +1,38 @@
package ai.chat2db.server.admin.api.controller.user.converter;
import ai.chat2db.server.admin.api.controller.user.request.UserPageCommonQueryRequest;
import ai.chat2db.server.admin.api.controller.user.vo.UserTeamPageQueryVO;
import ai.chat2db.server.domain.api.model.TeamUser;
import ai.chat2db.server.domain.api.param.team.user.TeamUserComprehensivePageQueryParam;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
/**
* converter
*
* @author Jiaju Zhuang
*/
@Mapper(componentModel = "spring")
public abstract class UserTeamAdminConverter {
/**
* convert
*
* @param request
* @return
*/
@Mappings({
@Mapping(source = "searchKey", target = "teamSearchKey"),
@Mapping(target = "enableReturnCount", expression = "java(true)"),
})
public abstract TeamUserComprehensivePageQueryParam request2param(UserPageCommonQueryRequest request);
/**
* conversion
*
* @param dto
* @return
*/
public abstract UserTeamPageQueryVO dto2vo(TeamUser dto);
}

View File

@@ -0,0 +1,54 @@
package ai.chat2db.server.admin.api.controller.user.request;
import ai.chat2db.server.domain.api.enums.RoleCodeEnum;
import ai.chat2db.server.domain.api.enums.ValidStatusEnum;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
* create
*@author Jiaju Zhuang
*/
@Data
public class UserCreateRequest {
/**
* 用户名
*/
@NotNull
private String userName;
/**
* 密码
*/
@NotNull
private String password;
/**
* 昵称
*/
@NotNull
private String nickName;
/**
* 邮箱
*/
@NotNull
private String email;
/**
* 角色编码
*
* @see RoleCodeEnum
*/
@NotNull
private String roleCode;
/**
* 用户状态
*
* @see ValidStatusEnum
*/
@NotNull
private String status;
}

View File

@@ -0,0 +1,32 @@
package ai.chat2db.server.admin.api.controller.user.request;
import java.util.List;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* create
*
* @author Jiaju Zhuang
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class UserDataSourceBatchCreateRequest {
/**
* user id
*/
private Long userId;
/**
* Data Source id list
*/
@NotNull
private List<Long> dataSourceIdList;
}

View File

@@ -0,0 +1,25 @@
package ai.chat2db.server.admin.api.controller.user.request;
import ai.chat2db.server.tools.base.wrapper.request.PageQueryRequest;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
* Pagination query
*
* @author Jiaju Zhuang
*/
@Data
public class UserPageCommonQueryRequest extends PageQueryRequest {
/**
* user id
*/
@NotNull
private Long userId;
/**
* searchKey
*/
private String searchKey;
}

View File

@@ -0,0 +1,32 @@
package ai.chat2db.server.admin.api.controller.user.request;
import java.util.List;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* create
*
* @author Jiaju Zhuang
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class UserTeamBatchCreateRequest {
/**
* user id
*/
private Long userId;
/**
* team id list
*/
@NotNull
private List<Long> teamIdList;
}

View File

@@ -0,0 +1,52 @@
package ai.chat2db.server.admin.api.controller.user.request;
import ai.chat2db.server.domain.api.enums.RoleCodeEnum;
import ai.chat2db.server.domain.api.enums.ValidStatusEnum;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
* create
*@author Jiaju Zhuang
*/
@Data
public class UserUpdateRequest {
/**
* 主键
*/
@NotNull
private Long id;
/**
* 密码
*/
private String password;
/**
* 昵称
*/
@NotNull
private String nickName;
/**
* 邮箱
*/
@NotNull
private String email;
/**
* 角色编码
*
* @see RoleCodeEnum
*/
private String roleCode;
/**
* 用户状态
*
* @see ValidStatusEnum
*/
@NotNull
private String status;
}

View File

@@ -0,0 +1,39 @@
package ai.chat2db.server.admin.api.controller.user.vo;
import ai.chat2db.server.domain.api.enums.ValidStatusEnum;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
* user
*
* @author Jiaju Zhuang
*/
@Data
public class SimpleUserVO {
/**
* 主键
*/
@NotNull
private Long id;
/**
* 用户名
*/
@NotNull
private String userName;
/**
* 昵称
*/
@NotNull
private String nickName;
/**
* 用户状态
*
* @see ValidStatusEnum
*/
private String status;
}

View File

@@ -0,0 +1,31 @@
package ai.chat2db.server.admin.api.controller.user.vo;
import ai.chat2db.server.admin.api.controller.datasource.vo.SimpleDataSourceVO;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
* Pagination query
*
* @author Jiaju Zhuang
*/
@Data
public class UserDataSourcePageQueryVO {
/**
* 主键
*/
@NotNull
private Long id;
/**
* user id
*/
private Long userId;
/**
* Data Source
*/
private SimpleDataSourceVO dataSource;
}

View File

@@ -0,0 +1,73 @@
package ai.chat2db.server.admin.api.controller.user.vo;
import java.util.Date;
import ai.chat2db.server.common.api.controller.vo.SimpleUserVO;
import ai.chat2db.server.domain.api.enums.RoleCodeEnum;
import ai.chat2db.server.domain.api.enums.ValidStatusEnum;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
* Pagination query
*
* @author Jiaju Zhuang
*/
@Data
public class UserPageQueryVO {
/**
* 主键
*/
@NotNull
private Long id;
/**
* 用户名
*/
@NotNull
private String userName;
/**
* 昵称
*/
@NotNull
private String nickName;
/**
* 用户状态
*
* @see ValidStatusEnum
*/
private String status;
/**
* 邮箱
*/
@NotNull
private String email;
/**
* 角色编码
*
* @see RoleCodeEnum
*/
private String roleCode;
/**
* 修改时间
*/
private Date gmtModified;
/**
* 修改人用户id
*/
private Long modifiedUserId;
/**
* 修改人用户
*/
private SimpleUserVO modifiedUser;
}

View File

@@ -0,0 +1,28 @@
package ai.chat2db.server.admin.api.controller.user.vo;
import ai.chat2db.server.admin.api.controller.team.vo.SimpleTeamVO;
import lombok.Data;
/**
* Pagination query
*
* @author Jiaju Zhuang
*/
@Data
public class UserTeamPageQueryVO {
/**
* 主键
*/
private Long id;
/**
* user id
*/
private Long userId;
/**
* 团队
*/
private SimpleTeamVO team;
}

View File

@@ -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;
/**
* Basic interface
*
* @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()));
}
}

View File

@@ -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);
}

View File

@@ -0,0 +1,20 @@
package ai.chat2db.server.common.api.controller.request;
import ai.chat2db.server.tools.base.wrapper.request.PageQueryRequest;
import lombok.Data;
/**
* Common pagination query
*
* @author Jiaju Zhuang
*/
@Data
public class CommonPageQueryRequest extends PageQueryRequest {
/**
* searchKey
*/
private String searchKey;
}

View File

@@ -0,0 +1,18 @@
package ai.chat2db.server.common.api.controller.request;
import lombok.Data;
/**
* Common query
*
* @author Jiaju Zhuang
*/
@Data
public class CommonQueryRequest {
/**
* searchKey
*/
private String searchKey;
}

View File

@@ -0,0 +1,48 @@
package ai.chat2db.server.common.api.controller.vo;
import java.io.Serial;
import java.io.Serializable;
import ai.chat2db.server.domain.api.enums.EnvironmentStyleEnum;
import ai.chat2db.server.tools.base.constant.EasyToolsConstant;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* Environment
*
* @author Jiaju Zhuang
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class SimpleEnvironmentVO implements Serializable {
@Serial
private static final long serialVersionUID = EasyToolsConstant.SERIAL_VERSION_UID;
/**
* 主键
*/
private Long id;
/**
* 环境名称
*/
private String name;
/**
* 环境缩写
*/
private String shortName;
/**
* 样式类型
*
* @see EnvironmentStyleEnum
*/
private String style;
}

View File

@@ -0,0 +1,41 @@
package ai.chat2db.server.common.api.controller.vo;
import java.io.Serial;
import java.io.Serializable;
import ai.chat2db.server.tools.base.constant.EasyToolsConstant;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* user
*
* @author Jiaju Zhuang
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class
SimpleUserVO implements Serializable {
@Serial
private static final long serialVersionUID = EasyToolsConstant.SERIAL_VERSION_UID;
/**
* 主键
*/
private Long id;
/**
* 用户名
*/
private String userName;
/**
* 昵称
*/
private String nickName;
}