diff --git a/internal/statsapi/feed.go b/internal/statsapi/feed.go index 152fc21..2c7b05e 100644 --- a/internal/statsapi/feed.go +++ b/internal/statsapi/feed.go @@ -79,11 +79,12 @@ func patch(obj any, path string, value any) error { if !found { err = setValue(obj, first, value) return err + } else if first == "" { + err = patch(obj, rest, value) + return err } switch v := obj.(type) { - case *FeedResponse: - err = patch(map[string]any(*v), rest, value) case map[string]any: err = patch(v[first], rest, value) case []any: @@ -105,7 +106,7 @@ func (f *FeedResponse) Patch(instr *instruction) { // TODO: need to handle each type of instruction separately: add, // replace, remove, copy, move log.Println("updating", instr.Path) - err := patch(f, instr.Path, instr.Value) + err := patch(map[string]any(*f), instr.Path, instr.Value) if err != nil { log.Println(err) }