From 831b54c30a6e48c9ccaafef12ada869d699107f5 Mon Sep 17 00:00:00 2001 From: Wangjunqi123 Date: Mon, 23 Oct 2023 11:02:29 +0800 Subject: [PATCH] add fields lookupbytype and lookupbyuuid to struct node --- server/meta/node.go | 31 +++++++++++++++++++++++++------ server/processor/processor.go | 6 ++++-- 2 files changed, 29 insertions(+), 8 deletions(-) diff --git a/server/meta/node.go b/server/meta/node.go index 392b7b9..94c0b16 100755 --- a/server/meta/node.go +++ b/server/meta/node.go @@ -7,8 +7,10 @@ import ( ) type Nodes struct { - Lookup map[string]*Node - Nodes []*Node + Lookup map[string]*Node + LookupByType map[string][]*Node + LookupByUUID map[string][]*Node + Nodes []*Node } type Node struct { @@ -32,18 +34,35 @@ func (ns *Nodes) Add(node *Node) { } ns.Lookup[node.ID] = node + ns.LookupByType[node.Type] = append(ns.LookupByType[node.Type], node) + ns.LookupByUUID[node.UUID] = append(ns.LookupByUUID[node.UUID], node) ns.Nodes = append(ns.Nodes, node) } -func (ns *Nodes) Remove(id string) error { +func (ns *Nodes) Remove(node *Node) error { for i := 0; i < len(ns.Nodes); i++ { - if ns.Nodes[i].ID != id { + if ns.Nodes[i].ID != node.ID { continue } + + for j, n := range ns.LookupByType[ns.Nodes[i].Type] { + if n.ID == node.ID { + ns.LookupByType[ns.Nodes[i].Type] = append(ns.LookupByType[ns.Nodes[i].Type][:j], ns.LookupByType[ns.Nodes[i].Type][j+1:]...) + break + } + } + + for j, n := range ns.LookupByUUID[ns.Nodes[i].UUID] { + if n.ID == node.ID { + ns.LookupByUUID[ns.Nodes[i].Type] = append(ns.LookupByUUID[ns.Nodes[i].UUID][:j], ns.LookupByUUID[ns.Nodes[i].UUID][j+1:]...) + } + } + ns.Nodes = append(ns.Nodes[:i], ns.Nodes[i+1:]...) - delete(ns.Lookup, id) + delete(ns.Lookup, node.ID) + return nil } - return errors.New(fmt.Sprintf("node %s not found**9", id)) + return errors.New(fmt.Sprintf("node %s not found**9", node.ID)) } diff --git a/server/processor/processor.go b/server/processor/processor.go index dd844af..ad69f98 100644 --- a/server/processor/processor.go +++ b/server/processor/processor.go @@ -24,8 +24,10 @@ func CreateDataProcesser() *DataProcesser { func (d *DataProcesser) Process_data() (*meta.Nodes, *meta.Edges, []error, []error) { nodes := &meta.Nodes{ - Lookup: make(map[string]*meta.Node, 0), - Nodes: make([]*meta.Node, 0), + Lookup: make(map[string]*meta.Node, 0), + LookupByType: make(map[string][]*meta.Node, 0), + LookupByUUID: make(map[string][]*meta.Node, 0), + Nodes: make([]*meta.Node, 0), } edges := &meta.Edges{ SrcToDsts: make(map[string][]string, 0), -- Gitee