diff options
Diffstat (limited to 'models/persister.go')
-rw-r--r-- | models/persister.go | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/models/persister.go b/models/persister.go index f877488..b4b9c49 100644 --- a/models/persister.go +++ b/models/persister.go @@ -98,6 +98,23 @@ func (p *Persister) Collect(model model) ([][]byte, error) { return result, err } +// Much faster, "keys only" version of Collect() +func (p *Persister) CollectKeys(model model) ([][]byte, error) { + var keys [][]byte + err := p.db.View(func(txn *badger.Txn) error { + opts := badger.DefaultIteratorOptions + opts.PrefetchValues = false + it := txn.NewIterator(opts) + defer it.Close() + prefix := []byte(model.Keybase()) + for it.Seek(prefix); it.ValidForPrefix(prefix); it.Next() { + keys = append(keys, it.Item().Key()) + } + return nil + }) + return keys, err +} + func (p *Persister) Find(model model) ([]byte, error) { var result []byte var item *badger.Item |