···339339 return tx.ForEach(func(name []byte, b *bbolt.Bucket) error {
340340 bucketName := string(name)
341341342342- if strings.HasPrefix(bucketName, "records:") {
343343- did := strings.TrimPrefix(bucketName, "records:")
342342+ if after, ok := strings.CutPrefix(bucketName, "records:"); ok {
343343+ did := after
344344 count := 0
345345 b.ForEach(func(k, v []byte) error {
346346 count++
···357357 stats.UserStats[did] = m
358358 }
359359360360- if strings.HasPrefix(bucketName, "processed:") {
361361- did := strings.TrimPrefix(bucketName, "processed:")
360360+ if after, ok := strings.CutPrefix(bucketName, "processed:"); ok {
361361+ did := after
362362 count := 0
363363 b.ForEach(func(k, v []byte) error {
364364 count++
···375375 stats.UserStats[did] = m
376376 }
377377378378- if strings.HasPrefix(bucketName, "failed:") {
379379- did := strings.TrimPrefix(bucketName, "failed:")
378378+ if after, ok := strings.CutPrefix(bucketName, "failed:"); ok {
379379+ did := after
380380 count := 0
381381 b.ForEach(func(k, v []byte) error {
382382 count++