use tag nodes instead of event tags slice
This commit is contained in:
+14
-37
@@ -152,60 +152,37 @@ func DefaultExpanders() []Expander {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func ExpandTaggedEvents(e roots.Event, s *EventSubgraph) {
|
func ExpandTaggedEvents(e roots.Event, s *EventSubgraph) {
|
||||||
tagNodes := s.NodesByLabel("Tag")
|
for _, tag := range s.NodesByLabel("Tag") {
|
||||||
for _, tag := range e.Tags {
|
if tag.Props["name"] != "e" {
|
||||||
if !IsValidTag(tag) {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
name := tag[0]
|
|
||||||
value := tag[1]
|
|
||||||
|
|
||||||
if name != "e" || !roots.IsValidID(value) {
|
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
tagNode := FindTagNode(tagNodes, name, value)
|
id, ok := tag.Props["value"].(string)
|
||||||
if tagNode == nil {
|
if !ok || !roots.IsValidID(id) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
referencedEvent := NewEventNode(value)
|
event := NewEventNode(id)
|
||||||
|
|
||||||
s.AddNode(referencedEvent)
|
s.AddNode(event)
|
||||||
s.AddRel(NewReferencesEventRel(tagNode, referencedEvent, nil))
|
s.AddRel(NewReferencesEventRel(tag, event, nil))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func ExpandTaggedUsers(e roots.Event, s *EventSubgraph) {
|
func ExpandTaggedUsers(e roots.Event, s *EventSubgraph) {
|
||||||
tagNodes := s.NodesByLabel("Tag")
|
for _, tag := range s.NodesByLabel("Tag") {
|
||||||
for _, tag := range e.Tags {
|
if tag.Props["name"] != "p" {
|
||||||
if !IsValidTag(tag) {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
name := tag[0]
|
|
||||||
value := tag[1]
|
|
||||||
|
|
||||||
if name != "p" || !roots.IsValidKey(value) {
|
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
tagNode := FindTagNode(tagNodes, name, value)
|
pubkey, ok := tag.Props["value"].(string)
|
||||||
if tagNode == nil {
|
if !ok || !roots.IsValidKey(pubkey) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
referencedEvent := NewUserNode(value)
|
user := NewUserNode(pubkey)
|
||||||
|
|
||||||
s.AddNode(referencedEvent)
|
s.AddNode(user)
|
||||||
s.AddRel(NewReferencesUserRel(tagNode, referencedEvent, nil))
|
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
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user