2025-04-08 15:58:29 +08:00
|
|
|
|
package dao
|
|
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
|
"StuAcaWorksAI/proto"
|
|
|
|
|
|
"gorm.io/gorm"
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
// 知识库表结构,存储知识库的基本信息及文件信息
|
|
|
|
|
|
type KnowledgeBase struct {
|
|
|
|
|
|
gorm.Model
|
|
|
|
|
|
AuthID uint `gorm:"column:auth_id"` // 知识库创建者ID
|
|
|
|
|
|
Name string `gorm:"column:name"` // 知识库名称
|
|
|
|
|
|
Description string `gorm:"column:description"` // 知识库描述
|
|
|
|
|
|
SessionID uint `gorm:"column:session_id"` // 会话ID,创建知识库自动生成会话
|
|
|
|
|
|
UUID string `gorm:"column:uuid"` // 知识库UUID,用于向量数据库唯一标识
|
|
|
|
|
|
FileIDs string `gorm:"column:file_ids"` // 文件ID列表,逗号分隔json '[{'file_id';1}]'
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 创建知识库
|
|
|
|
|
|
func CreateKnowledgeBase(base KnowledgeBase) (KnowledgeBase, error) {
|
|
|
|
|
|
var db2 *gorm.DB
|
|
|
|
|
|
var err error
|
|
|
|
|
|
if proto.Config.SERVER_SQL_LOG {
|
|
|
|
|
|
db2 = DB.Debug()
|
|
|
|
|
|
} else {
|
|
|
|
|
|
db2 = DB
|
|
|
|
|
|
}
|
|
|
|
|
|
err = db2.Create(&base).Error
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
|
return KnowledgeBase{}, err
|
|
|
|
|
|
}
|
|
|
|
|
|
return base, nil
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 更新知识库
|
|
|
|
|
|
func UpdateKnowledgeBase(base KnowledgeBase) (KnowledgeBase, error) {
|
|
|
|
|
|
var db2 *gorm.DB
|
|
|
|
|
|
var err error
|
|
|
|
|
|
if proto.Config.SERVER_SQL_LOG {
|
|
|
|
|
|
db2 = DB.Debug()
|
|
|
|
|
|
} else {
|
|
|
|
|
|
db2 = DB
|
|
|
|
|
|
}
|
|
|
|
|
|
err = db2.Save(&base).Error
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
|
return KnowledgeBase{}, err
|
|
|
|
|
|
}
|
|
|
|
|
|
return base, nil
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 获取知识库列表
|
|
|
|
|
|
func GetKnowledgeBaseList(authID int) ([]KnowledgeBase, error) {
|
|
|
|
|
|
var db2 *gorm.DB
|
|
|
|
|
|
var err error
|
|
|
|
|
|
if proto.Config.SERVER_SQL_LOG {
|
|
|
|
|
|
db2 = DB.Debug()
|
|
|
|
|
|
} else {
|
|
|
|
|
|
db2 = DB
|
|
|
|
|
|
}
|
|
|
|
|
|
var bases []KnowledgeBase
|
|
|
|
|
|
err = db2.Where("auth_id = ?", authID).Find(&bases).Error
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
|
return nil, err
|
|
|
|
|
|
}
|
|
|
|
|
|
return bases, nil
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 根据id获取知识库
|
|
|
|
|
|
func GetKnowledgeBaseByID(id uint) (KnowledgeBase, error) {
|
|
|
|
|
|
var db2 *gorm.DB
|
|
|
|
|
|
var err error
|
|
|
|
|
|
if proto.Config.SERVER_SQL_LOG {
|
|
|
|
|
|
db2 = DB.Debug()
|
|
|
|
|
|
} else {
|
|
|
|
|
|
db2 = DB
|
|
|
|
|
|
}
|
|
|
|
|
|
var base KnowledgeBase
|
|
|
|
|
|
err = db2.Where("id = ?", id).First(&base).Error
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
|
return KnowledgeBase{}, err
|
|
|
|
|
|
}
|
|
|
|
|
|
return base, nil
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 删除知识库
|
|
|
|
|
|
func DeleteKnowledgeBase(id uint) error {
|
|
|
|
|
|
var db2 *gorm.DB
|
|
|
|
|
|
var err error
|
|
|
|
|
|
if proto.Config.SERVER_SQL_LOG {
|
|
|
|
|
|
db2 = DB.Debug()
|
|
|
|
|
|
} else {
|
|
|
|
|
|
db2 = DB
|
|
|
|
|
|
}
|
|
|
|
|
|
err = db2.Where("id = ?", id).Delete(&KnowledgeBase{}).Error
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
|
return err
|
|
|
|
|
|
}
|
|
|
|
|
|
return nil
|
|
|
|
|
|
}
|
2025-04-09 17:37:24 +08:00
|
|
|
|
|
|
|
|
|
|
// 根据会话id查找知识库
|
|
|
|
|
|
func GetKnowledgeBaseBySessionID(sessionID uint) (KnowledgeBase, error) {
|
|
|
|
|
|
var db2 *gorm.DB
|
|
|
|
|
|
var err error
|
|
|
|
|
|
if proto.Config.SERVER_SQL_LOG {
|
|
|
|
|
|
db2 = DB.Debug()
|
|
|
|
|
|
} else {
|
|
|
|
|
|
db2 = DB
|
|
|
|
|
|
}
|
|
|
|
|
|
var base KnowledgeBase
|
|
|
|
|
|
err = db2.Where("session_id = ?", sessionID).First(&base).Error
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
|
return KnowledgeBase{}, err
|
|
|
|
|
|
}
|
|
|
|
|
|
return base, nil
|
|
|
|
|
|
}
|