saw-go/dao/kbase.go

100 lines
2.2 KiB
Go
Raw Normal View History

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
}