This is an automated email from the ASF dual-hosted git repository.
wuzhiguo pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/bigtop-manager.git
The following commit(s) were added to refs/heads/main by this push:
new 59e833b BIGTOP-4237: Change the JSON field of the LLM table to string
(#81)
59e833b is described below
commit 59e833b590d1428025875c57bad1cd98fcb48b30
Author: haopeng <[email protected]>
AuthorDate: Tue Oct 8 14:35:44 2024 +0800
BIGTOP-4237: Change the JSON field of the LLM table to string (#81)
---
.../assistant/store/PersistentChatMemoryStore.java | 2 +-
.../manager/dao/handler/JsonTypeHandler.java | 72 --------
.../bigtop/manager/dao/po/AuthPlatformPO.java | 5 +-
.../apache/bigtop/manager/dao/po/ChatThreadPO.java | 5 +-
.../apache/bigtop/manager/dao/po/PlatformPO.java | 5 +-
.../manager/dao/repository/AuthPlatformDao.java | 4 -
.../bigtop/manager/dao/repository/BaseDao.java | 20 ++-
.../manager/dao/repository/ChatThreadDao.java | 4 -
.../bigtop/manager/dao/repository/PlatformDao.java | 4 +-
.../bigtop/manager/dao/sql/BaseSqlProvider.java | 26 ---
.../apache/bigtop/manager/dao/sql/SQLBuilder.java | 194 ---------------------
.../resources/mapper/mysql/AuthPlatformMapper.xml | 18 +-
.../resources/mapper/mysql/ChatThreadMapper.xml | 19 --
.../main/resources/mapper/mysql/PlatformMapper.xml | 9 -
.../main/resources/mapper/mysql/ServiceMapper.xml | 2 +-
.../mapper/postgresql/AuthPlatformMapper.xml | 15 +-
.../mapper/postgresql/ChatThreadMapper.xml | 13 --
.../resources/mapper/postgresql/PlatformMapper.xml | 9 -
.../resources/mapper/postgresql/ServiceMapper.xml | 2 +-
.../model/converter/AuthPlatformConverter.java | 10 +-
.../model/converter/ChatThreadConverter.java | 11 +-
.../server/model/converter/ConverterTool.java | 11 ++
.../server/model/converter/PlatformConverter.java | 8 +-
.../manager/server/model/dto/ChatThreadDTO.java | 19 +-
.../server/service/impl/ChatbotServiceImpl.java | 81 +++++----
.../src/main/resources/ddl/MySQL-DDL-CREATE.sql | 6 +-
.../main/resources/ddl/PostgreSQL-DDL-CREATE.sql | 6 +-
27 files changed, 129 insertions(+), 451 deletions(-)
diff --git
a/bigtop-manager-ai/bigtop-manager-ai-assistant/src/main/java/org/apache/bigtop/manager/ai/assistant/store/PersistentChatMemoryStore.java
b/bigtop-manager-ai/bigtop-manager-ai-assistant/src/main/java/org/apache/bigtop/manager/ai/assistant/store/PersistentChatMemoryStore.java
index a112b7b..4c3ee25 100644
---
a/bigtop-manager-ai/bigtop-manager-ai-assistant/src/main/java/org/apache/bigtop/manager/ai/assistant/store/PersistentChatMemoryStore.java
+++
b/bigtop-manager-ai/bigtop-manager-ai-assistant/src/main/java/org/apache/bigtop/manager/ai/assistant/store/PersistentChatMemoryStore.java
@@ -71,7 +71,7 @@ public class PersistentChatMemoryStore implements
ChatMemoryStore {
} else {
return null;
}
- ChatThreadPO chatThreadPO = chatThreadDao.findByThreadId(chatThreadId);
+ ChatThreadPO chatThreadPO = chatThreadDao.findById(chatThreadId);
chatMessagePO.setUserId(chatThreadPO.getUserId());
chatMessagePO.setThreadId(chatThreadId);
return chatMessagePO;
diff --git
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/handler/JsonTypeHandler.java
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/handler/JsonTypeHandler.java
deleted file mode 100644
index 4879753..0000000
---
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/handler/JsonTypeHandler.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.bigtop.manager.dao.handler;
-
-import org.apache.ibatis.type.BaseTypeHandler;
-import org.apache.ibatis.type.JdbcType;
-
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.util.Map;
-
-public class JsonTypeHandler extends BaseTypeHandler<Map<String, String>> {
-
- private static final ObjectMapper objectMapper = new ObjectMapper();
-
- @Override
- public void setNonNullParameter(PreparedStatement ps, int i, Map<String,
String> parameter, JdbcType jdbcType)
- throws SQLException {
- ps.setString(i, convertMapToJson(parameter));
- }
-
- @Override
- public Map<String, String> getNullableResult(ResultSet rs, String
columnName) throws SQLException {
- return convertJsonToMap(rs.getString(columnName));
- }
-
- @Override
- public Map<String, String> getNullableResult(ResultSet rs, int
columnIndex) throws SQLException {
- return convertJsonToMap(rs.getString(columnIndex));
- }
-
- @Override
- public Map<String, String> getNullableResult(java.sql.CallableStatement
cs, int columnIndex) throws SQLException {
- return convertJsonToMap(cs.getString(columnIndex));
- }
-
- private String convertMapToJson(Map<String, String> map) {
- try {
- return objectMapper.writeValueAsString(map);
- } catch (Exception e) {
- throw new RuntimeException("Error converting map to JSON string",
e);
- }
- }
-
- private Map<String, String> convertJsonToMap(String json) {
- try {
- return objectMapper.readValue(json, new TypeReference<Map<String,
String>>() {});
- } catch (Exception e) {
- throw new RuntimeException("Error converting JSON string to map",
e);
- }
- }
-}
diff --git
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/AuthPlatformPO.java
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/AuthPlatformPO.java
index 9fbc5b5..8f22e4a 100644
---
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/AuthPlatformPO.java
+++
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/AuthPlatformPO.java
@@ -25,7 +25,6 @@ import jakarta.persistence.Column;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import java.io.Serializable;
-import java.util.Map;
@Data
@EqualsAndHashCode(callSuper = true)
@@ -36,8 +35,8 @@ public class AuthPlatformPO extends BasePO implements
Serializable {
@Column(name = "id")
private Long id;
- @Column(name = "credentials", columnDefinition = "json", nullable = false)
- private Map<String, String> credentials;
+ @Column(name = "credentials", nullable = false)
+ private String credentials;
@Column(name = "platform_id", nullable = false)
private Long platformId;
diff --git
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/ChatThreadPO.java
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/ChatThreadPO.java
index 28e52ea..11ebef6 100644
---
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/ChatThreadPO.java
+++
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/ChatThreadPO.java
@@ -25,7 +25,6 @@ import jakarta.persistence.Column;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import java.io.Serializable;
-import java.util.Map;
@Data
@EqualsAndHashCode(callSuper = true)
@@ -38,8 +37,8 @@ public class ChatThreadPO extends BasePO implements
Serializable {
@Column(name = "model", nullable = false, length = 255)
private String model;
- @Column(name = "thread_info", columnDefinition = "json")
- private Map<String, String> threadInfo;
+ @Column(name = "thread_info")
+ private String threadInfo;
@Column(name = "user_id", nullable = false)
private Long userId;
diff --git
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/PlatformPO.java
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/PlatformPO.java
index 0180c51..df68a30 100644
---
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/PlatformPO.java
+++
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/PlatformPO.java
@@ -25,7 +25,6 @@ import jakarta.persistence.Column;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import java.io.Serializable;
-import java.util.Map;
@Data
@EqualsAndHashCode(callSuper = true)
@@ -39,8 +38,8 @@ public class PlatformPO extends BasePO implements
Serializable {
@Column(name = "name", nullable = false, length = 255)
private String name;
- @Column(name = "credential", columnDefinition = "json", nullable = false)
- private Map<String, String> credential;
+ @Column(name = "credential", nullable = false)
+ private String credential;
@Column(name = "support_models", length = 255)
private String supportModels;
diff --git
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/AuthPlatformDao.java
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/AuthPlatformDao.java
index b3500e7..a7e0589 100644
---
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/AuthPlatformDao.java
+++
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/AuthPlatformDao.java
@@ -23,9 +23,5 @@ import org.apache.bigtop.manager.dao.po.AuthPlatformPO;
import org.apache.ibatis.annotations.Param;
public interface AuthPlatformDao extends BaseDao<AuthPlatformPO> {
- AuthPlatformPO findByAuthId(@Param("authId") Long authId);
-
AuthPlatformPO findByPlatformId(@Param("platformId") Long platformId);
-
- void saveWithCredentials(AuthPlatformPO authPlatformPO);
}
diff --git
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/BaseDao.java
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/BaseDao.java
index 686ece1..62b6c7c 100644
---
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/BaseDao.java
+++
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/BaseDao.java
@@ -27,6 +27,8 @@ import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.SelectProvider;
import org.apache.ibatis.annotations.UpdateProvider;
+import org.springframework.transaction.annotation.Transactional;
+
import java.io.Serializable;
import java.util.Collection;
import java.util.List;
@@ -63,14 +65,24 @@ public interface BaseDao<Entity> {
/**
* Partially update the entities by primary key.
*/
- @UpdateProvider(type = BaseSqlProvider.class, method =
"partialUpdateByIds")
- int partialUpdateByIds(List<Entity> entities);
+ @Transactional
+ default int partialUpdateByIds(List<Entity> entities) {
+ for (Entity entity : entities) {
+ partialUpdateById(entity);
+ }
+ return entities.size();
+ }
/**
* Fully update the entities by primary key.
*/
- @UpdateProvider(type = BaseSqlProvider.class, method = "updateByIds")
- int updateByIds(List<Entity> entities);
+ @Transactional
+ default int updateByIds(List<Entity> entities) {
+ for (Entity entity : entities) {
+ updateById(entity);
+ }
+ return entities.size();
+ }
/**
* Query the entity by primary key.
diff --git
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/ChatThreadDao.java
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/ChatThreadDao.java
index f8abe55..389e5b3 100644
---
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/ChatThreadDao.java
+++
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/ChatThreadDao.java
@@ -27,11 +27,7 @@ import java.util.List;
public interface ChatThreadDao extends BaseDao<ChatThreadPO> {
List<ChatThreadPO> findAllByUserId(@Param("userId") Long userId);
- ChatThreadPO findByThreadId(@Param("id") Long id);
-
List<ChatThreadPO> findAllByAuthIdAndUserId(@Param("authId") Long authId,
@Param("userId") Long userId);
- void saveWithThreadInfo(ChatThreadPO chatThreadPO);
-
List<ChatThreadPO> findAllByAuthId(@Param("authId") Long authId);
}
diff --git
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/PlatformDao.java
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/PlatformDao.java
index e2d3c97..ea68335 100644
---
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/PlatformDao.java
+++
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/PlatformDao.java
@@ -20,6 +20,4 @@ package org.apache.bigtop.manager.dao.repository;
import org.apache.bigtop.manager.dao.po.PlatformPO;
-public interface PlatformDao extends BaseDao<PlatformPO> {
- PlatformPO findByPlatformId(Long id);
-}
+public interface PlatformDao extends BaseDao<PlatformPO> {}
diff --git
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/sql/BaseSqlProvider.java
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/sql/BaseSqlProvider.java
index d2f9296..c76eef0 100644
---
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/sql/BaseSqlProvider.java
+++
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/sql/BaseSqlProvider.java
@@ -71,19 +71,6 @@ public class BaseSqlProvider {
return SQLBuilder.update(tableMetaData, entity, databaseId, true);
}
- public <Entity> String partialUpdateByIds(List<Entity> entities,
ProviderContext context) {
- Assert.notNull(entities, "entities must not be null");
- Assert.notEmpty(entities, "entities list must not be empty");
-
- String databaseId = context.getDatabaseId();
-
- Class<?> entityClass = entities.get(0).getClass();
-
- TableMetaData tableMetaData = TableMetaData.forClass(entityClass);
-
- return SQLBuilder.updateList(tableMetaData, entities, databaseId,
true);
- }
-
public <Entity> String updateById(Entity entity, ProviderContext context) {
Assert.notNull(entity, "entity must not null");
@@ -95,19 +82,6 @@ public class BaseSqlProvider {
return SQLBuilder.update(tableMetaData, entity, databaseId, false);
}
- public <Entity> String updateByIds(List<Entity> entities, ProviderContext
context) {
- Assert.notNull(entities, "entities must not be null");
- Assert.notEmpty(entities, "entities list must not be empty");
-
- String databaseId = context.getDatabaseId();
-
- Class<?> entityClass = entities.get(0).getClass();
-
- TableMetaData tableMetaData = TableMetaData.forClass(entityClass);
-
- return SQLBuilder.updateList(tableMetaData, entities, databaseId,
false);
- }
-
public String selectById(Serializable id, ProviderContext context) {
String databaseId = context.getDatabaseId();
diff --git
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/sql/SQLBuilder.java
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/sql/SQLBuilder.java
index 4b56c73..5b06e37 100644
---
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/sql/SQLBuilder.java
+++
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/sql/SQLBuilder.java
@@ -41,7 +41,6 @@ import java.io.Serializable;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -273,192 +272,6 @@ public class SQLBuilder {
return sql.toString();
}
- public static <Entity> String updateList(
- TableMetaData tableMetaData, List<Entity> entities, String
databaseId, boolean partial) {
- if (entities == null || entities.isEmpty()) {
- throw new IllegalArgumentException("Entities list must not be null
or empty");
- }
-
- Class<?> entityClass = entities.get(0).getClass();
- Map<String, String> fieldColumnMap = tableMetaData.getFieldColumnMap();
-
- StringBuilder sqlBuilder = new StringBuilder();
- switch (DBType.toType(databaseId)) {
- case MYSQL: {
- sqlBuilder
- .append("UPDATE ")
- .append(keywordsFormat(tableMetaData.getTableName(),
DBType.MYSQL))
- .append(" SET ");
- Map<String, StringBuilder> setClauses = new LinkedHashMap<>();
- String primaryKey = keywordsFormat("id", DBType.MYSQL);
- for (Map.Entry<String, String> entry :
fieldColumnMap.entrySet()) {
- // Ignore primary key
- if (Objects.equals(entry.getKey(),
tableMetaData.getPkProperty())) {
- primaryKey = keywordsFormat(entry.getValue(),
DBType.MYSQL);
- continue;
- }
- Field field = ReflectionUtils.findField(entityClass,
entry.getKey());
- if (field == null || checkBaseField(field)) {
- continue;
- }
- StringBuilder caseClause = new StringBuilder();
- caseClause
- .append(keywordsFormat(entry.getValue(),
DBType.MYSQL))
- .append(" = CASE ");
- for (Entity entity : entities) {
- PropertyDescriptor ps =
BeanUtils.getPropertyDescriptor(entityClass, entry.getKey());
- if (ps == null || ps.getReadMethod() == null) {
- continue;
- }
- Object value =
ReflectionUtils.invokeMethod(ps.getReadMethod(), entity);
- PropertyDescriptor pkPs =
- BeanUtils.getPropertyDescriptor(entityClass,
tableMetaData.getPkProperty());
- if (pkPs == null || pkPs.getReadMethod() == null) {
- continue;
- }
- Object pkValue =
ReflectionUtils.invokeMethod(pkPs.getReadMethod(), entity);
-
- if (!ObjectUtils.isEmpty(value)) {
- caseClause
- .append("WHEN ")
- .append(primaryKey)
- .append(" = '")
- .append(pkValue)
- .append("' THEN '")
-
.append(escapeSingleQuote(value.toString()))
- .append("' ");
- } else if (!partial) {
- Column column = field.getAnnotation(Column.class);
- if (column != null && !column.nullable() && value
== null) {
- continue;
- }
- caseClause
- .append("WHEN ")
- .append(primaryKey)
- .append(" = '")
- .append(pkValue)
- .append("' THEN NULL ");
- }
- }
- if (caseClause.toString().endsWith("CASE ")) {
- caseClause.append("WHEN TRUE THEN ");
- } else {
- caseClause.append("ELSE ");
- }
- caseClause
- .append(keywordsFormat(entry.getValue(),
DBType.MYSQL))
- .append(" ");
- caseClause.append("END");
- setClauses.put(entry.getValue(), caseClause);
- }
- sqlBuilder.append(String.join(", ", setClauses.values()));
-
- sqlBuilder.append(" WHERE ").append(primaryKey).append(" IN
(");
- String pkValues = entities.stream()
- .map(entity -> {
- PropertyDescriptor pkPs =
-
BeanUtils.getPropertyDescriptor(entityClass, tableMetaData.getPkProperty());
- Object pkValue =
ReflectionUtils.invokeMethod(pkPs.getReadMethod(), entity);
- return "'" + pkValue.toString() + "'";
- })
- .collect(Collectors.joining(", "));
-
- sqlBuilder.append(pkValues).append(")");
- break;
- }
- case POSTGRESQL: {
- sqlBuilder
- .append("UPDATE ")
- .append("\"")
- .append(tableMetaData.getTableName())
- .append("\"")
- .append(" SET ");
- Map<String, StringBuilder> setClauses = new LinkedHashMap<>();
- String primaryKey = keywordsFormat("id", DBType.POSTGRESQL);
- for (Map.Entry<String, String> entry :
fieldColumnMap.entrySet()) {
- // Ignore primary key
- if (Objects.equals(entry.getKey(),
tableMetaData.getPkProperty())) {
- primaryKey = keywordsFormat(entry.getValue(),
DBType.POSTGRESQL);
- continue;
- }
- Field field = ReflectionUtils.findField(entityClass,
entry.getKey());
- if (field == null || checkBaseField(field)) {
- continue;
- }
- StringBuilder caseClause = new StringBuilder();
- caseClause
- .append(keywordsFormat(entry.getValue(),
DBType.POSTGRESQL))
- .append(" = CASE ");
-
- for (Entity entity : entities) {
- PropertyDescriptor ps =
BeanUtils.getPropertyDescriptor(entityClass, entry.getKey());
- if (ps == null || ps.getReadMethod() == null) {
- continue;
- }
- Object value =
ReflectionUtils.invokeMethod(ps.getReadMethod(), entity);
- PropertyDescriptor pkPs =
- BeanUtils.getPropertyDescriptor(entityClass,
tableMetaData.getPkProperty());
- if (pkPs == null || pkPs.getReadMethod() == null) {
- continue;
- }
- Object pkValue =
ReflectionUtils.invokeMethod(pkPs.getReadMethod(), entity);
-
- if (!ObjectUtils.isEmpty(value)) {
- caseClause
- .append("WHEN ")
- .append(primaryKey)
- .append(" = '")
- .append(pkValue)
- .append("' THEN '")
-
.append(escapeSingleQuote(value.toString()))
- .append("' ");
- } else if (!partial) {
- Column column = field.getAnnotation(Column.class);
- if (column != null && !column.nullable() && value
== null) {
- continue;
- }
- caseClause
- .append("WHEN ")
- .append(primaryKey)
- .append(" = '")
- .append(pkValue)
- .append("' THEN NULL ");
- }
- }
- if (caseClause.toString().endsWith("CASE ")) {
- caseClause.append("WHEN TRUE THEN ");
- } else {
- caseClause.append("ELSE ");
- }
- caseClause
- .append(keywordsFormat(entry.getValue(),
DBType.POSTGRESQL))
- .append(" ");
- caseClause.append("END");
- setClauses.put(entry.getValue(), caseClause);
- }
- sqlBuilder.append(String.join(", ", setClauses.values()));
-
- sqlBuilder.append(" WHERE ").append(primaryKey).append(" IN
(");
- String pkValues = entities.stream()
- .map(entity -> {
- PropertyDescriptor pkPs =
-
BeanUtils.getPropertyDescriptor(entityClass, tableMetaData.getPkProperty());
- Object pkValue =
ReflectionUtils.invokeMethod(pkPs.getReadMethod(), entity);
- return "'" + pkValue.toString() + "'";
- })
- .collect(Collectors.joining(", "));
-
- sqlBuilder.append(pkValues).append(")");
- break;
- }
- default: {
- log.error("Unsupported data source");
- }
- }
-
- return sqlBuilder.toString();
- }
-
public static String selectById(TableMetaData tableMetaData, String
databaseId, Serializable id) {
SQL sql = new SQL();
@@ -643,13 +456,6 @@ public class SQLBuilder {
return "#{" + property + "}";
}
- private static String escapeSingleQuote(String input) {
- if (input != null) {
- return input.replace("'", "''");
- }
- return null;
- }
-
private static boolean checkBaseField(Field field) {
return field.isAnnotationPresent(CreateBy.class)
|| field.isAnnotationPresent(CreateTime.class)
diff --git
a/bigtop-manager-dao/src/main/resources/mapper/mysql/AuthPlatformMapper.xml
b/bigtop-manager-dao/src/main/resources/mapper/mysql/AuthPlatformMapper.xml
index d8b978e..f4da188 100644
--- a/bigtop-manager-dao/src/main/resources/mapper/mysql/AuthPlatformMapper.xml
+++ b/bigtop-manager-dao/src/main/resources/mapper/mysql/AuthPlatformMapper.xml
@@ -26,24 +26,8 @@
id, credentials, platfotrm_id
</sql>
- <resultMap id="AuthPlatformResultMap"
type="org.apache.bigtop.manager.dao.po.AuthPlatformPO">
- <result property="credentials" column="credentials"
typeHandler="org.apache.bigtop.manager.dao.handler.JsonTypeHandler"/>
- </resultMap>
-
- <select id="findByAuthId" resultMap="AuthPlatformResultMap">
- SELECT * FROM llm_auth_platform WHERE id = #{authId} AND is_deleted = 0
- </select>
-
- <select id="findByPlatformId" resultMap="AuthPlatformResultMap">
+ <select id="findByPlatformId"
resultType="org.apache.bigtop.manager.dao.po.AuthPlatformPO">
SELECT * FROM llm_auth_platform WHERE platform_id = #{platformId} AND
is_deleted = 0
</select>
- <insert id="saveWithCredentials"
parameterType="org.apache.bigtop.manager.dao.po.AuthPlatformPO"
useGeneratedKeys="true" keyProperty="id">
- INSERT INTO llm_auth_platform (platform_id, credentials)
- VALUES (#{platformId}, #{credentials,
typeHandler=org.apache.bigtop.manager.dao.handler.JsonTypeHandler})
- ON DUPLICATE KEY UPDATE
- platform_id = VALUES(platform_id),
- credentials = VALUES(credentials)
- </insert>
-
</mapper>
\ No newline at end of file
diff --git
a/bigtop-manager-dao/src/main/resources/mapper/mysql/ChatThreadMapper.xml
b/bigtop-manager-dao/src/main/resources/mapper/mysql/ChatThreadMapper.xml
index 0622a6a..396d08b 100644
--- a/bigtop-manager-dao/src/main/resources/mapper/mysql/ChatThreadMapper.xml
+++ b/bigtop-manager-dao/src/main/resources/mapper/mysql/ChatThreadMapper.xml
@@ -25,10 +25,6 @@
id, user_id, auth_id, platform_id, model
</sql>
- <resultMap id="ChatThreadResultMap"
type="org.apache.bigtop.manager.dao.po.ChatThreadPO">
- <result property="threadInfo" column="thread_info"
typeHandler="org.apache.bigtop.manager.dao.handler.JsonTypeHandler"/>
- </resultMap>
-
<select id="findAllByUserId"
resultType="org.apache.bigtop.manager.dao.po.ChatThreadPO">
SELECT *
FROM llm_chat_thread
@@ -42,21 +38,6 @@
WHERE auth_id = #{authId} AND user_id = #{userId} AND is_deleted = 0
</select>
- <select id="findByThreadId" resultMap="ChatThreadResultMap">
- SELECT * FROM llm_chat_thread WHERE id = #{id} AND is_deleted = 0
- </select>
-
- <insert id="saveWithThreadInfo"
parameterType="org.apache.bigtop.manager.dao.po.ChatThreadPO"
useGeneratedKeys="true" keyProperty="id">
- INSERT INTO llm_chat_thread (auth_id, platform_id, user_id, model,
thread_info)
- VALUES (#{authId}, #{platformId}, #{userId}, #{model}, #{threadInfo,
typeHandler=org.apache.bigtop.manager.dao.handler.JsonTypeHandler})
- ON DUPLICATE KEY UPDATE
- auth_id = VALUES(auth_id),
- platform_id = VALUES(platform_id),
- user_id = VALUES(user_id),
- model = VALUES(model),
- thread_info = VALUES(thread_info)
- </insert>
-
<select id="findAllByAuthId"
resultType="org.apache.bigtop.manager.dao.po.ChatThreadPO">
SELECT *
FROM llm_chat_thread
diff --git
a/bigtop-manager-dao/src/main/resources/mapper/mysql/PlatformMapper.xml
b/bigtop-manager-dao/src/main/resources/mapper/mysql/PlatformMapper.xml
index e4ca903..5a41a57 100644
--- a/bigtop-manager-dao/src/main/resources/mapper/mysql/PlatformMapper.xml
+++ b/bigtop-manager-dao/src/main/resources/mapper/mysql/PlatformMapper.xml
@@ -26,13 +26,4 @@
id, name, credential, support_models
</sql>
- <!-- Define the resultMap with the custom typeHandler for the credential
column -->
- <resultMap id="PlatformResultMap"
type="org.apache.bigtop.manager.dao.po.PlatformPO">
- <result property="credential" column="credential"
typeHandler="org.apache.bigtop.manager.dao.handler.JsonTypeHandler"/>
- </resultMap>
-
- <select id="findByPlatformId" resultMap="PlatformResultMap">
- SELECT * FROM llm_platform WHERE id = #{id}
- </select>
-
</mapper>
\ No newline at end of file
diff --git
a/bigtop-manager-dao/src/main/resources/mapper/mysql/ServiceMapper.xml
b/bigtop-manager-dao/src/main/resources/mapper/mysql/ServiceMapper.xml
index 5a40565..9b38c83 100644
--- a/bigtop-manager-dao/src/main/resources/mapper/mysql/ServiceMapper.xml
+++ b/bigtop-manager-dao/src/main/resources/mapper/mysql/ServiceMapper.xml
@@ -122,7 +122,7 @@
cluster_id = #{clusterId}
</if>
<if test="serviceNames != null and serviceNames.size() > 0">
- and service_name = in
+ and service_name in
<foreach collection="serviceNames" item="serviceName"
index="index" open="(" close=")" separator=", ">
#{serviceName}
</foreach>
diff --git
a/bigtop-manager-dao/src/main/resources/mapper/postgresql/AuthPlatformMapper.xml
b/bigtop-manager-dao/src/main/resources/mapper/postgresql/AuthPlatformMapper.xml
index 4ead82d..dcfaedc 100644
---
a/bigtop-manager-dao/src/main/resources/mapper/postgresql/AuthPlatformMapper.xml
+++
b/bigtop-manager-dao/src/main/resources/mapper/postgresql/AuthPlatformMapper.xml
@@ -26,21 +26,8 @@
id, credentials, platfotrm_id
</sql>
- <resultMap id="AuthPlatformResultMap"
type="org.apache.bigtop.manager.dao.po.AuthPlatformPO">
- <result property="credentials" column="credentials"
typeHandler="org.apache.bigtop.manager.dao.handler.JsonTypeHandler"/>
- </resultMap>
-
- <select id="findByAuthId" resultMap="AuthPlatformResultMap">
- SELECT * FROM llm_auth_platform WHERE id = #{authId} AND is_deleted =
false
- </select>
-
- <select id="findByPlatformId" resultMap="AuthPlatformResultMap">
+ <select id="findByPlatformId"
resultType="org.apache.bigtop.manager.dao.po.AuthPlatformPO">
SELECT * FROM llm_auth_platform WHERE platform_id = #{platformId} AND
is_deleted = false
</select>
- <insert id="saveWithCredentials"
parameterType="org.apache.bigtop.manager.dao.po.AuthPlatformPO"
useGeneratedKeys="true" keyProperty="id">
- INSERT INTO llm_auth_platform (platform_id, credentials)
- VALUES (#{platformId}, #{credentials,
typeHandler=org.apache.bigtop.manager.dao.handler.JsonTypeHandler}::json)
- </insert>
-
</mapper>
\ No newline at end of file
diff --git
a/bigtop-manager-dao/src/main/resources/mapper/postgresql/ChatThreadMapper.xml
b/bigtop-manager-dao/src/main/resources/mapper/postgresql/ChatThreadMapper.xml
index 2aa96da..21bb809 100644
---
a/bigtop-manager-dao/src/main/resources/mapper/postgresql/ChatThreadMapper.xml
+++
b/bigtop-manager-dao/src/main/resources/mapper/postgresql/ChatThreadMapper.xml
@@ -25,10 +25,6 @@
id, user_id, auth_id, platform_id, model
</sql>
- <resultMap id="ChatThreadResultMap"
type="org.apache.bigtop.manager.dao.po.ChatThreadPO">
- <result property="threadInfo" column="thread_info"
typeHandler="org.apache.bigtop.manager.dao.handler.JsonTypeHandler"/>
- </resultMap>
-
<select id="findAllByUserId"
resultType="org.apache.bigtop.manager.dao.po.ChatThreadPO">
SELECT *
FROM llm_chat_thread
@@ -42,15 +38,6 @@
WHERE auth_id = #{authId} AND user_id = #{userId} AND is_deleted =
false
</select>
- <select id="findByThreadId" resultMap="ChatThreadResultMap">
- SELECT * FROM llm_chat_thread WHERE id = #{id} AND is_deleted = false
- </select>
-
- <insert id="saveWithThreadInfo"
parameterType="org.apache.bigtop.manager.dao.po.ChatThreadPO"
useGeneratedKeys="true" keyProperty="id">
- INSERT INTO llm_chat_thread (auth_id, platform_id, user_id, model,
thread_info)
- VALUES (#{authId}, #{platformId}, #{userId}, #{model}, #{threadInfo,
typeHandler=org.apache.bigtop.manager.dao.handler.JsonTypeHandler}::json)
- </insert>
-
<select id="findAllByAuthId"
resultType="org.apache.bigtop.manager.dao.po.ChatThreadPO">
SELECT *
FROM llm_chat_thread
diff --git
a/bigtop-manager-dao/src/main/resources/mapper/postgresql/PlatformMapper.xml
b/bigtop-manager-dao/src/main/resources/mapper/postgresql/PlatformMapper.xml
index 885ae6d..cd63096 100644
--- a/bigtop-manager-dao/src/main/resources/mapper/postgresql/PlatformMapper.xml
+++ b/bigtop-manager-dao/src/main/resources/mapper/postgresql/PlatformMapper.xml
@@ -26,13 +26,4 @@
"id", "name", "credential", "support_models"
</sql>
- <!-- Define the resultMap with the custom typeHandler for the credential
column -->
- <resultMap id="PlatformResultMap"
type="org.apache.bigtop.manager.dao.po.PlatformPO">
- <result property="credential" column="credential"
typeHandler="org.apache.bigtop.manager.dao.handler.JsonTypeHandler"/>
- </resultMap>
-
- <select id="findByPlatformId" resultMap="PlatformResultMap">
- SELECT * FROM llm_platform WHERE id = #{id}
- </select>
-
</mapper>
\ No newline at end of file
diff --git
a/bigtop-manager-dao/src/main/resources/mapper/postgresql/ServiceMapper.xml
b/bigtop-manager-dao/src/main/resources/mapper/postgresql/ServiceMapper.xml
index 5a40565..9b38c83 100644
--- a/bigtop-manager-dao/src/main/resources/mapper/postgresql/ServiceMapper.xml
+++ b/bigtop-manager-dao/src/main/resources/mapper/postgresql/ServiceMapper.xml
@@ -122,7 +122,7 @@
cluster_id = #{clusterId}
</if>
<if test="serviceNames != null and serviceNames.size() > 0">
- and service_name = in
+ and service_name in
<foreach collection="serviceNames" item="serviceName"
index="index" open="(" close=")" separator=", ">
#{serviceName}
</foreach>
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/AuthPlatformConverter.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/AuthPlatformConverter.java
index a6ea344..7fb9ff4 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/AuthPlatformConverter.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/AuthPlatformConverter.java
@@ -37,7 +37,9 @@ import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
-@Mapper(config = MapStructSharedConfig.class)
+@Mapper(
+ uses = {ConverterTool.class},
+ config = MapStructSharedConfig.class)
public interface AuthPlatformConverter {
AuthPlatformConverter INSTANCE =
Mappers.getMapper(AuthPlatformConverter.class);
@@ -59,4 +61,10 @@ public interface AuthPlatformConverter {
default void afterMapping(@MappingTarget AuthPlatformDTO authPlatformDTO,
AuthPlatformReq authPlatformReq) {
authPlatformDTO.setAuthCredentials(mapAuthCredentials(authPlatformReq.getAuthCredentials()));
}
+
+ @Mapping(source = "authCredentials", target = "credentials",
qualifiedByName = "map2String")
+ AuthPlatformPO fromDTO2PO(AuthPlatformDTO authPlatformDTO);
+
+ @Mapping(source = "credentials", target = "authCredentials",
qualifiedByName = "jsonString2Map")
+ AuthPlatformDTO fromPO2DTO(AuthPlatformPO authPlatformPO);
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/ChatThreadConverter.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/ChatThreadConverter.java
index 6931da2..5da0b64 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/ChatThreadConverter.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/ChatThreadConverter.java
@@ -20,16 +20,25 @@ package org.apache.bigtop.manager.server.model.converter;
import org.apache.bigtop.manager.dao.po.ChatThreadPO;
import org.apache.bigtop.manager.server.config.MapStructSharedConfig;
+import org.apache.bigtop.manager.server.model.dto.ChatThreadDTO;
import org.apache.bigtop.manager.server.model.vo.ChatThreadVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
-@Mapper(config = MapStructSharedConfig.class)
+@Mapper(
+ uses = {ConverterTool.class},
+ config = MapStructSharedConfig.class)
public interface ChatThreadConverter {
ChatThreadConverter INSTANCE =
Mappers.getMapper(ChatThreadConverter.class);
@Mapping(source = "id", target = "threadId")
ChatThreadVO fromPO2VO(ChatThreadPO platformAuthorizedPO);
+
+ @Mapping(source = "threadInfo", target = "threadInfo", qualifiedByName =
"map2String")
+ ChatThreadPO fromDTO2PO(ChatThreadDTO chatThreadDTO);
+
+ @Mapping(source = "threadInfo", target = "threadInfo", qualifiedByName =
"jsonString2Map")
+ ChatThreadDTO fromPO2DTO(ChatThreadPO chatThreadPO);
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/ConverterTool.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/ConverterTool.java
index 087fd50..714af19 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/ConverterTool.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/ConverterTool.java
@@ -27,6 +27,7 @@ import org.mapstruct.Named;
import com.fasterxml.jackson.core.type.TypeReference;
import java.util.List;
+import java.util.Map;
public class ConverterTool {
@@ -49,4 +50,14 @@ public class ConverterTool {
public List<PropertyVO> json2PropertyVOList(String json) {
return JsonUtils.readFromString(json, new TypeReference<>() {});
}
+
+ @Named("map2String")
+ public String map2String(Map<String, String> map) {
+ return JsonUtils.writeAsString(map);
+ }
+
+ @Named("jsonString2Map")
+ public Map<String, String> jsonString2Map(String json) {
+ return JsonUtils.readFromString(json, new TypeReference<>() {});
+ }
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/PlatformConverter.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/PlatformConverter.java
index 0ee4285..f872b51 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/PlatformConverter.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/PlatformConverter.java
@@ -27,6 +27,7 @@ import org.apache.bigtop.manager.server.model.vo.PlatformVO;
import org.mapstruct.AfterMapping;
import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
import org.mapstruct.MappingTarget;
import org.mapstruct.factory.Mappers;
@@ -34,7 +35,9 @@ import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
-@Mapper(config = MapStructSharedConfig.class)
+@Mapper(
+ uses = {ConverterTool.class},
+ config = MapStructSharedConfig.class)
public interface PlatformConverter {
PlatformConverter INSTANCE = Mappers.getMapper(PlatformConverter.class);
@@ -56,4 +59,7 @@ public interface PlatformConverter {
default void afterMapping(@MappingTarget PlatformDTO platformDTO,
PlatformReq platformReq) {
platformDTO.setAuthCredentials(mapAuthCredentials(platformReq.getAuthCredentials()));
}
+
+ @Mapping(source = "credential", target = "authCredentials",
qualifiedByName = "jsonString2Map")
+ PlatformDTO fromPO2DTO(PlatformPO platformPO);
}
diff --git
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/PlatformDao.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/ChatThreadDTO.java
similarity index 72%
copy from
bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/PlatformDao.java
copy to
bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/ChatThreadDTO.java
index e2d3c97..dfb8943 100644
---
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/PlatformDao.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/ChatThreadDTO.java
@@ -16,10 +16,21 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.bigtop.manager.dao.repository;
+package org.apache.bigtop.manager.server.model.dto;
-import org.apache.bigtop.manager.dao.po.PlatformPO;
+import lombok.Data;
-public interface PlatformDao extends BaseDao<PlatformPO> {
- PlatformPO findByPlatformId(Long id);
+import java.util.Map;
+
+@Data
+public class ChatThreadDTO {
+ private Long id;
+
+ private Long platformId;
+
+ private Long authId;
+
+ private Map<String, String> authCredentials;
+
+ private Map<String, String> threadInfo;
}
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/ChatbotServiceImpl.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/ChatbotServiceImpl.java
index ee8ea0d..7cbbbc1 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/ChatbotServiceImpl.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/ChatbotServiceImpl.java
@@ -41,6 +41,8 @@ import
org.apache.bigtop.manager.server.model.converter.ChatMessageConverter;
import org.apache.bigtop.manager.server.model.converter.ChatThreadConverter;
import org.apache.bigtop.manager.server.model.converter.PlatformConverter;
import org.apache.bigtop.manager.server.model.dto.AuthPlatformDTO;
+import org.apache.bigtop.manager.server.model.dto.ChatThreadDTO;
+import org.apache.bigtop.manager.server.model.dto.PlatformDTO;
import org.apache.bigtop.manager.server.model.vo.AuthPlatformVO;
import org.apache.bigtop.manager.server.model.vo.ChatMessageVO;
import org.apache.bigtop.manager.server.model.vo.ChatThreadVO;
@@ -130,14 +132,15 @@ public class ChatbotServiceImpl implements ChatbotService
{
@Override
public List<PlatformAuthCredentialVO> platformsAuthCredentials(Long
platformId) {
- PlatformPO platformPO = platformDao.findByPlatformId(platformId);
+ PlatformPO platformPO = platformDao.findById(platformId);
if (platformPO == null) {
throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_FOUND);
}
List<PlatformAuthCredentialVO> platformAuthCredentialVOs = new
ArrayList<>();
- for (String key : platformPO.getCredential().keySet()) {
- PlatformAuthCredentialVO platformAuthCredentialVO =
- new PlatformAuthCredentialVO(key,
platformPO.getCredential().get(key));
+ PlatformDTO platformDTO =
PlatformConverter.INSTANCE.fromPO2DTO(platformPO);
+ for (String key : platformDTO.getAuthCredentials().keySet()) {
+ PlatformAuthCredentialVO platformAuthCredentialVO = new
PlatformAuthCredentialVO(
+ key, platformDTO.getAuthCredentials().get(key));
platformAuthCredentialVOs.add(platformAuthCredentialVO);
}
return platformAuthCredentialVOs;
@@ -161,11 +164,12 @@ public class ChatbotServiceImpl implements ChatbotService
{
@Override
public AuthPlatformVO addAuthorizedPlatform(AuthPlatformDTO
authPlatformDTO) {
- PlatformPO platformPO =
platformDao.findByPlatformId(authPlatformDTO.getPlatformId());
+ PlatformPO platformPO =
platformDao.findById(authPlatformDTO.getPlatformId());
if (platformPO == null) {
throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_FOUND);
}
- Map<String, String> credentialSet = getStringMap(authPlatformDTO,
platformPO);
+ Map<String, String> credentialSet =
+ getStringMap(authPlatformDTO,
PlatformConverter.INSTANCE.fromPO2DTO(platformPO));
List<String> models =
List.of(platformPO.getSupportModels().split(","));
if (models.isEmpty()) {
throw new ApiException(ApiExceptionEnum.MODEL_NOT_SUPPORTED);
@@ -175,22 +179,20 @@ public class ChatbotServiceImpl implements ChatbotService
{
throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_FOUND);
}
- AuthPlatformPO authPlatformPO = new AuthPlatformPO();
- authPlatformPO.setCredentials(credentialSet);
- authPlatformPO.setPlatformId(platformPO.getId());
-
- authPlatformDao.saveWithCredentials(authPlatformPO);
+ authPlatformDTO.setAuthCredentials(credentialSet);
+ AuthPlatformPO authPlatformPO =
AuthPlatformConverter.INSTANCE.fromDTO2PO(authPlatformDTO);
+ authPlatformDao.save(authPlatformPO);
AuthPlatformVO authPlatformVO =
AuthPlatformConverter.INSTANCE.fromPO2VO(authPlatformPO, platformPO);
authPlatformVO.setSupportModels(platformPO.getSupportModels());
authPlatformVO.setPlatformName(platformPO.getName());
return authPlatformVO;
}
- private static @NotNull Map<String, String> getStringMap(AuthPlatformDTO
authPlatformDTO, PlatformPO platformPO) {
- if (platformPO == null) {
+ private static @NotNull Map<String, String> getStringMap(AuthPlatformDTO
authPlatformDTO, PlatformDTO platformDTO) {
+ if (platformDTO == null) {
throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_FOUND);
}
- Map<String, String> credentialNeed = platformPO.getCredential();
+ Map<String, String> credentialNeed = platformDTO.getAuthCredentials();
Map<String, String> credentialGet =
authPlatformDTO.getAuthCredentials();
Map<String, String> credentialSet = new HashMap<>();
for (String key : credentialNeed.keySet()) {
@@ -204,8 +206,8 @@ public class ChatbotServiceImpl implements ChatbotService {
@Override
public boolean deleteAuthorizedPlatform(Long authId) {
- AuthPlatformPO authPlatformPO = authPlatformDao.findByAuthId(authId);
- if (authPlatformPO == null) {
+ AuthPlatformPO authPlatformPO = authPlatformDao.findById(authId);
+ if (authPlatformPO == null || authPlatformPO.getIsDeleted()) {
throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_AUTHORIZED);
}
@@ -228,34 +230,36 @@ public class ChatbotServiceImpl implements ChatbotService
{
@Override
public ChatThreadVO createChatThreads(Long authId, String model) {
- AuthPlatformPO authPlatformPO = authPlatformDao.findByAuthId(authId);
- if (authPlatformPO == null) {
+ AuthPlatformPO authPlatformPO = authPlatformDao.findById(authId);
+ if (authPlatformPO == null || authPlatformPO.getIsDeleted()) {
throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_AUTHORIZED);
}
+ AuthPlatformDTO authPlatformDTO =
AuthPlatformConverter.INSTANCE.fromPO2DTO(authPlatformPO);
Long userId = SessionUserHolder.getUserId();
- PlatformPO platformPO =
platformDao.findByPlatformId(authPlatformPO.getPlatformId());
+ PlatformPO platformPO =
platformDao.findById(authPlatformPO.getPlatformId());
List<String> supportModels =
List.of(platformPO.getSupportModels().split(","));
if (!supportModels.contains(model)) {
throw new ApiException(ApiExceptionEnum.MODEL_NOT_SUPPORTED);
}
- ChatThreadPO chatThreadPO = new ChatThreadPO();
- chatThreadPO.setUserId(userId);
- chatThreadPO.setModel(model);
- chatThreadPO.setAuthId(authPlatformPO.getId());
- chatThreadPO.setPlatformId(authPlatformPO.getPlatformId());
+ ChatThreadDTO chatThreadDTO = new ChatThreadDTO();
+ chatThreadDTO.setPlatformId(platformPO.getId());
+ chatThreadDTO.setAuthId(authPlatformPO.getId());
- AIAssistant aiAssistant = buildAIAssistant(
- platformPO.getName(), chatThreadPO.getModel(),
authPlatformPO.getCredentials(), null, null);
+ AIAssistant aiAssistant =
+ buildAIAssistant(platformPO.getName(), model,
authPlatformDTO.getAuthCredentials(), null, null);
Map<String, String> threadInfo = aiAssistant.createThread();
- chatThreadPO.setThreadInfo(threadInfo);
- chatThreadDao.saveWithThreadInfo(chatThreadPO);
+ chatThreadDTO.setThreadInfo(threadInfo);
+ ChatThreadPO chatThreadPO =
ChatThreadConverter.INSTANCE.fromDTO2PO(chatThreadDTO);
+ chatThreadPO.setUserId(userId);
+ chatThreadPO.setModel(model);
+ chatThreadDao.save(chatThreadPO);
return ChatThreadConverter.INSTANCE.fromPO2VO(chatThreadPO);
}
@Override
public boolean deleteChatThreads(Long authId, Long threadId) {
ChatThreadPO chatThreadPO = chatThreadDao.findById(threadId);
- if (chatThreadPO == null) {
+ if (chatThreadPO == null || chatThreadPO.getIsDeleted()) {
throw new ApiException(ApiExceptionEnum.CHAT_THREAD_NOT_FOUND);
}
@@ -286,23 +290,24 @@ public class ChatbotServiceImpl implements ChatbotService
{
@Override
public SseEmitter talk(Long authId, Long threadId, String message) {
- ChatThreadPO chatThreadPO = chatThreadDao.findByThreadId(threadId);
+ ChatThreadPO chatThreadPO = chatThreadDao.findById(threadId);
Long userId = SessionUserHolder.getUserId();
- if (!Objects.equals(userId, chatThreadPO.getUserId())) {
+ if (!Objects.equals(userId, chatThreadPO.getUserId()) ||
chatThreadPO.getIsDeleted()) {
throw new ApiException(ApiExceptionEnum.CHAT_THREAD_NOT_FOUND);
}
- AuthPlatformPO authPlatformPO = authPlatformDao.findByAuthId(authId);
- if (authPlatformPO == null) {
+ AuthPlatformPO authPlatformPO = authPlatformDao.findById(authId);
+ if (authPlatformPO == null || authPlatformPO.getIsDeleted()) {
throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_AUTHORIZED);
}
-
+ AuthPlatformDTO authPlatformDTO =
AuthPlatformConverter.INSTANCE.fromPO2DTO(authPlatformPO);
+ ChatThreadDTO chatThreadDTO =
ChatThreadConverter.INSTANCE.fromPO2DTO(chatThreadPO);
PlatformPO platformPO =
platformDao.findById(authPlatformPO.getPlatformId());
AIAssistant aiAssistant = buildAIAssistant(
platformPO.getName(),
chatThreadPO.getModel(),
- authPlatformPO.getCredentials(),
+ authPlatformDTO.getAuthCredentials(),
chatThreadPO.getId(),
- chatThreadPO.getThreadInfo());
+ chatThreadDTO.getThreadInfo());
Flux<String> stringFlux = aiAssistant.streamAsk(message);
SseEmitter emitter = new SseEmitter();
@@ -324,8 +329,8 @@ public class ChatbotServiceImpl implements ChatbotService {
@Override
public List<ChatMessageVO> history(Long authId, Long threadId) {
List<ChatMessageVO> chatMessages = new ArrayList<>();
- ChatThreadPO chatThreadPO = chatThreadDao.findByThreadId(threadId);
- if (chatThreadPO == null) {
+ ChatThreadPO chatThreadPO = chatThreadDao.findById(threadId);
+ if (chatThreadPO == null || chatThreadPO.getIsDeleted()) {
throw new ApiException(ApiExceptionEnum.CHAT_THREAD_NOT_FOUND);
}
Long userId = SessionUserHolder.getUserId();
diff --git a/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql
b/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql
index 8a0bf67..1937ae4 100644
--- a/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql
+++ b/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql
@@ -314,7 +314,7 @@ CREATE TABLE `llm_platform`
(
`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL,
- `credential` JSON DEFAULT NULL,
+ `credential` TEXT DEFAULT NULL,
`support_models` VARCHAR(255) DEFAULT NULL,
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE
CURRENT_TIMESTAMP,
@@ -327,7 +327,7 @@ CREATE TABLE `llm_auth_platform`
(
`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
`platform_id` BIGINT(20) UNSIGNED NOT NULL,
- `credentials` JSON NOT NULL,
+ `credentials` TEXT NOT NULL,
`is_deleted` TINYINT(1) DEFAULT 0 NULL,
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE
CURRENT_TIMESTAMP,
@@ -345,7 +345,7 @@ CREATE TABLE `llm_chat_thread`
`user_id` BIGINT(20) UNSIGNED NOT NULL,
`model` VARCHAR(255) NOT NULL,
`is_deleted` TINYINT(1) DEFAULT 0 NULL,
- `thread_info` JSON DEFAULT NULL,
+ `thread_info` TEXT DEFAULT NULL,
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE
CURRENT_TIMESTAMP,
`create_by` BIGINT DEFAULT NULL,
diff --git
a/bigtop-manager-server/src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql
b/bigtop-manager-server/src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql
index 61099d7..2493c85 100644
--- a/bigtop-manager-server/src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql
+++ b/bigtop-manager-server/src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql
@@ -324,7 +324,7 @@ CREATE TABLE llm_platform
(
id BIGINT CHECK (id > 0) NOT NULL GENERATED ALWAYS AS IDENTITY,
name VARCHAR(255) NOT NULL,
- credential JSON DEFAULT NULL,
+ credential TEXT DEFAULT NULL,
support_models VARCHAR(255) DEFAULT NULL,
create_time TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP,
update_time TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP /* ON UPDATE
CURRENT_TIMESTAMP */,
@@ -337,7 +337,7 @@ CREATE TABLE llm_auth_platform
(
id BIGINT CHECK (id > 0) NOT NULL GENERATED ALWAYS AS
IDENTITY,
platform_id BIGINT CHECK (platform_id > 0) NOT NULL,
- credentials JSON NOT NULL,
+ credentials TEXT NOT NULL,
is_deleted BOOLEAN DEFAULT FALSE,
create_time TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP,
update_time TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP /* ON UPDATE
CURRENT_TIMESTAMP */,
@@ -355,7 +355,7 @@ CREATE TABLE llm_chat_thread
platform_id BIGINT CHECK (platform_id > 0) NOT NULL,
user_id BIGINT CHECK (user_id > 0) NOT NULL,
model VARCHAR(255) NOT NULL,
- thread_info JSON DEFAULT NULL,
+ thread_info TEXT DEFAULT NULL,
is_deleted BOOLEAN DEFAULT FALSE,
create_time TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP,
update_time TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP /* ON UPDATE
CURRENT_TIMESTAMP */,