f-21: code: add list prefix

Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
This commit is contained in:
GnomeZworc 2026-04-12 17:30:36 +02:00
commit 94a14dbe60
Signed by: nicolas.boufideline
GPG key ID: 4406BBBF8845D632

33
pkg/db/kv/listByPrefix.go Normal file
View file

@ -0,0 +1,33 @@
package kv
import (
"github.com/dgraph-io/badger/v4"
)
// ListByPrefix returns all key-value pairs whose key starts with prefix.
func ListByPrefix(db *badger.DB, prefix string) (map[string]string, error) {
result := make(map[string]string)
p := []byte(prefix)
err := db.View(func(txn *badger.Txn) error {
opts := badger.DefaultIteratorOptions
opts.PrefetchSize = 10
it := txn.NewIterator(opts)
defer it.Close()
for it.Seek(p); it.ValidForPrefix(p); it.Next() {
item := it.Item()
key := string(item.Key())
val, err := item.ValueCopy(nil)
if err != nil {
return err
}
result[key] = string(val)
}
return nil
})
return result, err
}