Index: service/datastore/dumper/dumper.go |
diff --git a/service/datastore/dumper/dumper.go b/service/datastore/dumper/dumper.go |
index a3b5a16187ac0a322f6658f87eb4de36a1431876..94add797d0ad51f300862bb0e61e615ace00a8d6 100644 |
--- a/service/datastore/dumper/dumper.go |
+++ b/service/datastore/dumper/dumper.go |
@@ -86,17 +86,26 @@ func (cfg Config) Query(c context.Context, q *datastore.Query) (n int, err error |
return |
} |
- prop := func(kind, name string, vals []datastore.Property) (err error) { |
- if len(vals) <= 1 { |
- return prnt(" %q: [%s]\n", name, fmtVal(kind, name, vals[0])) |
- } |
- if err = prnt(" %q: [\n %s", name, fmtVal(kind, name, vals[0])); err != nil { |
- return |
- } |
- for _, v := range vals[1:] { |
- if err = prnt(",\n %s", fmtVal(kind, name, v)); err != nil { |
+ prop := func(kind, name string, pdata datastore.PropertyData) (err error) { |
+ switch t := pdata.(type) { |
+ case datastore.Property: |
+ return prnt(" %q: %s\n", name, fmtVal(kind, name, t)) |
+ |
+ case datastore.PropertySlice: |
+ if len(t) <= 1 { |
+ return prnt(" %q: [%s]\n", name, fmtVal(kind, name, t[0])) |
+ } |
+ if err = prnt(" %q: [\n %s", name, fmtVal(kind, name, t[0])); err != nil { |
return |
} |
+ for _, v := range t[1:] { |
+ if err = prnt(",\n %s", fmtVal(kind, name, v)); err != nil { |
+ return |
+ } |
+ } |
+ |
+ default: |
+ return fmt.Errorf("unknown PropertyData %T", t) |
} |
return prnt("\n ]\n") |
} |