From 6cfed94ff60d433d7dc84a5313bf654e54e189c0 Mon Sep 17 00:00:00 2001 From: Simon Martens Date: Tue, 7 Jan 2025 20:13:08 +0100 Subject: [PATCH] Clear function to clear things on reparse --- providers/xmlprovider/resolver.go | 10 +++++++--- viewmodels/agent_view.go | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/providers/xmlprovider/resolver.go b/providers/xmlprovider/resolver.go index d2aa714..276e57a 100644 --- a/providers/xmlprovider/resolver.go +++ b/providers/xmlprovider/resolver.go @@ -27,9 +27,6 @@ func (r *Resolver[T]) Add(typeName, refID string, item Resolved[T]) { } func (r *Resolver[T]) Get(typeName, refID string) ([]Resolved[T], error) { - r.mu.Lock() - defer r.mu.Unlock() - if typeIndex, exists := r.index[typeName]; exists { if items, ok := typeIndex[refID]; ok { return items, nil @@ -38,3 +35,10 @@ func (r *Resolver[T]) Get(typeName, refID string) ([]Resolved[T], error) { } return nil, fmt.Errorf("no index exists for type '%s'", typeName) } + +func (r *Resolver[T]) Clear() { + r.mu.Lock() + defer r.mu.Unlock() + + r.index = make(map[string]map[string][]Resolved[T]) +} diff --git a/viewmodels/agent_view.go b/viewmodels/agent_view.go index 151fa6f..aedb8e5 100644 --- a/viewmodels/agent_view.go +++ b/viewmodels/agent_view.go @@ -52,11 +52,11 @@ func AgentsView(letterorid string, lib *xmlmodels.Library) *AgentsListView { } } - // INFO: All lookups are O(1) for _, a := range res.Agents { if works, err := lib.Works.ReverseLookup(a); err == nil { for _, w := range works { if pieces, err := lib.Pieces.ReverseLookup(w.Item); err == nil { + // INFO: it makes no sense to append works that have no pieces attached a.Works = append(a.Works, WorkByAgent{Resolved: w, Pieces: pieces}) } }