From a17319ada77c1db2af4ea1843b1b423b9c61aaac Mon Sep 17 00:00:00 2001 From: Jay Date: Thu, 21 May 2026 13:42:28 -0400 Subject: [PATCH] use tag nodes instead of event tags slice --- subgraph.go | 51 ++++++++++++++------------------------------------- 1 file changed, 14 insertions(+), 37 deletions(-) diff --git a/subgraph.go b/subgraph.go index 7640535..5c3877d 100644 --- a/subgraph.go +++ b/subgraph.go @@ -152,60 +152,37 @@ func DefaultExpanders() []Expander { } func ExpandTaggedEvents(e roots.Event, s *EventSubgraph) { - tagNodes := s.NodesByLabel("Tag") - for _, tag := range e.Tags { - if !IsValidTag(tag) { - continue - } - name := tag[0] - value := tag[1] - - if name != "e" || !roots.IsValidID(value) { + for _, tag := range s.NodesByLabel("Tag") { + if tag.Props["name"] != "e" { continue } - tagNode := FindTagNode(tagNodes, name, value) - if tagNode == nil { + id, ok := tag.Props["value"].(string) + if !ok || !roots.IsValidID(id) { continue } - referencedEvent := NewEventNode(value) + event := NewEventNode(id) - s.AddNode(referencedEvent) - s.AddRel(NewReferencesEventRel(tagNode, referencedEvent, nil)) + s.AddNode(event) + s.AddRel(NewReferencesEventRel(tag, event, nil)) } } func ExpandTaggedUsers(e roots.Event, s *EventSubgraph) { - tagNodes := s.NodesByLabel("Tag") - for _, tag := range e.Tags { - if !IsValidTag(tag) { - continue - } - name := tag[0] - value := tag[1] - - if name != "p" || !roots.IsValidKey(value) { + for _, tag := range s.NodesByLabel("Tag") { + if tag.Props["name"] != "p" { continue } - tagNode := FindTagNode(tagNodes, name, value) - if tagNode == nil { + pubkey, ok := tag.Props["value"].(string) + if !ok || !roots.IsValidKey(pubkey) { continue } - referencedEvent := NewUserNode(value) + user := NewUserNode(pubkey) - s.AddNode(referencedEvent) - s.AddRel(NewReferencesUserRel(tagNode, referencedEvent, nil)) + s.AddNode(user) + s.AddRel(NewReferencesUserRel(tag, user, nil)) } } - -func FindTagNode(nodes []*Node, name, value string) *Node { - for _, node := range nodes { - if node.Props["name"] == name && node.Props["value"] == value { - return node - } - } - return nil -}