func dumpBucket(w io.Writer, db *kv.DB) (err error) { //log.Printf("dumping %s", db) io.WriteString(w, `{"name": "`+db.Name()+`", "records": [`) enc := json.NewEncoder(w) enum, e := db.SeekFirst() if e != nil { if e != io.EOF { err = e log.Printf("error getting first: %s", err) } return } vi := new(weedutils.ValInfo) for { k, v, err := enum.Next() if err != nil { if err != io.EOF { log.Printf("error getting next: %s", err) } break } if err = vi.Decode(v); err != nil { log.Printf("error decoding %s: %s", v, err) continue } fmt.Fprintf(w, `{"object": %q, "value": `, k) if err = enc.Encode(vi); err != nil { log.Printf("error printing %v to json: %s", vi, err) continue } io.WriteString(w, "},\n") } io.WriteString(w, "]},\n") io.WriteString(w, "]},\n") return nil }