MCPcopy Create free account
hub / github.com/astercloud/aster / RemoveRelation

Method RemoveRelation

pkg/knowledge/manager.go:603–641  ·  view source on GitHub ↗

RemoveRelation 移除知识关系

(ctx context.Context, fromID, toID string, relationType RelationType)

Source from the content-addressed store, hash-verified

601
602// RemoveRelation 移除知识关系
603func (m *manager) RemoveRelation(ctx context.Context, fromID, toID string, relationType RelationType) error {
604 m.mu.Lock()
605 defer m.mu.Unlock()
606
607 // 获取知识项
608 item, err := m.getItemFromMemory(ctx, fromID)
609 if err != nil {
610 return fmt.Errorf("knowledge: item not found: %w", err)
611 }
612
613 // 移除关系
614 relations := make([]KnowledgeRelation, 0, len(item.Relations))
615 removed := false
616 for _, existing := range item.Relations {
617 if existing.Type == relationType && existing.TargetID == toID {
618 removed = true
619 } else {
620 relations = append(relations, existing)
621 }
622 }
623
624 if !removed {
625 return errors.New("knowledge: relation not found")
626 }
627
628 item.Relations = relations
629
630 // 保存更新
631 if err := m.saveItemToMemory(ctx, item); err != nil {
632 return fmt.Errorf("knowledge: failed to save updated relations: %w", err)
633 }
634
635 // 记录审计
636 if m.config.EnableAudit {
637 m.audit("remove_relation", "", fromID, fmt.Sprintf("Removed relation to %s: %s", toID, relationType))
638 }
639
640 return nil
641}
642
643// GetRelated 获取相关知识
644func (m *manager) GetRelated(ctx context.Context, id string, relationTypes []RelationType, maxDepth int) ([]*KnowledgeItem, error) {

Callers

nothing calls this directly

Calls 3

getItemFromMemoryMethod · 0.95
saveItemToMemoryMethod · 0.95
auditMethod · 0.95

Tested by

no test coverage detected