30 lines
923 B
Go
30 lines
923 B
Go
package run
|
|
|
|
import (
|
|
"encoding/json"
|
|
"git.iwork-ai.com/xdc/iqudo-top1/internal/model"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type knowledgeSnapshot struct {
|
|
Items []model.KnowledgeItem `json:"items"`
|
|
Relations []model.KnowledgeRelation `json:"relations"`
|
|
}
|
|
|
|
func snapshotKnowledge(db *gorm.DB, tenantID, scenarioID uint64) ([]byte, error) {
|
|
var snapshot knowledgeSnapshot
|
|
if err := db.Where("tenant_id = ? AND scenario_id = ? AND status = ?", tenantID, scenarioID, "active").Order("sort_order,id").Find(&snapshot.Items).Error; err != nil {
|
|
return nil, err
|
|
}
|
|
if err := db.Where("tenant_id = ? AND scenario_id = ?", tenantID, scenarioID).Order("sort_order,id").Find(&snapshot.Relations).Error; err != nil {
|
|
return nil, err
|
|
}
|
|
return json.Marshal(snapshot)
|
|
}
|
|
|
|
func parseKnowledgeSnapshot(raw []byte) (knowledgeSnapshot, error) {
|
|
var snapshot knowledgeSnapshot
|
|
err := json.Unmarshal(raw, &snapshot)
|
|
return snapshot, err
|
|
}
|