saw-go/service/knowledgeBaseService.go

71 lines
1.9 KiB
Go
Raw Normal View History

2025-04-08 15:58:29 +08:00
package service
import (
"StuAcaWorksAI/dao"
"StuAcaWorksAI/proto"
"errors"
"github.com/google/uuid"
)
func CreateKnowledgeBase(userID int, req proto.KnowledgeBaseReq) (dao.KnowledgeBase, error) {
//生成uuid
uuid := uuid.New().String()
sessionName := "知识库会话:" + req.Name
//创建会话
err, sessionID := CreateSession(userID, proto.SessionTypeKnowledgeBase, sessionName)
if err != nil {
return dao.KnowledgeBase{}, err
}
// 创建知识库
base := dao.KnowledgeBase{AuthID: uint(userID), Name: req.Name, Description: req.Description, UUID: uuid, FileIDs: req.FileIDS, SessionID: sessionID}
knowledgeBase, err := dao.CreateKnowledgeBase(base)
if err != nil {
return dao.KnowledgeBase{}, err
}
// 创建向量数据库,后面完成
return knowledgeBase, err
}
// 更新知识库
func UpdateKnowledgeBase(userID int, req proto.KnowledgeBaseReq) (dao.KnowledgeBase, error) {
//查找知识库
knowledgeBase, err := dao.GetKnowledgeBaseByID(req.ID)
if err != nil {
return dao.KnowledgeBase{}, err
}
if knowledgeBase.AuthID != uint(userID) {
return dao.KnowledgeBase{}, errors.New("not authorized to update this knowledge base")
}
knowledgeBase.Name = req.Name
knowledgeBase.Description = req.Description
knowledgeBase.FileIDs = req.FileIDS
return dao.UpdateKnowledgeBase(knowledgeBase)
}
// 获取知识库列表
func GetKnowledgeBaseList(userID int) ([]dao.KnowledgeBase, error) {
knowledgeBases, err := dao.GetKnowledgeBaseList(userID)
if err != nil {
return nil, err
}
return knowledgeBases, nil
}
// 删除知识库
func DeleteKnowledgeBase(userID int, req proto.KnowledgeBaseReq) error {
//查找知识库
knowledgeBase, err := dao.GetKnowledgeBaseByID(req.ID)
if err != nil {
return err
}
if knowledgeBase.AuthID != uint(userID) {
return errors.New("not authorized to delete this knowledge base")
}
return dao.DeleteKnowledgeBase(knowledgeBase.ID)
}