saw-go/dao/kbase.go

117 lines
2.6 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
}
// 根据会话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
}