diff options
author | Julio Capote <jcapote@gmail.com> | 2022-12-30 03:32:16 +0000 |
---|---|---|
committer | Julio Capote <jcapote@gmail.com> | 2022-12-30 03:32:16 +0000 |
commit | 74ffcfe6b2c80b7cf459798dc42bd278075ccb50 (patch) | |
tree | 231880fb4de3cf900d03c33531d2afc9603432d3 /models/persister.go | |
parent | a4288b06bf13210721c8f2fae64bc12c118f9041 (diff) | |
download | communique-74ffcfe6b2c80b7cf459798dc42bd278075ccb50.tar.gz |
experiment with write JSON to database and munge it for collections
Diffstat (limited to 'models/persister.go')
-rw-r--r-- | models/persister.go | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/models/persister.go b/models/persister.go index 71cddc8..3729c81 100644 --- a/models/persister.go +++ b/models/persister.go @@ -35,3 +35,23 @@ func (p *Persister) Count(model model) (int, error) { }) return count, err } + +func (p *Persister) Collect(model model) ([]string, error) { + var result []string + err := p.db.View(func(txn *badger.Txn) error { + opts := badger.DefaultIteratorOptions + opts.PrefetchValues = false // TODO Maybe we want true here + it := txn.NewIterator(opts) + defer it.Close() + prefix := []byte(model.Keybase()) + for it.Seek(prefix); it.ValidForPrefix(prefix); it.Next() { + item := it.Item() + item.Value(func(v []byte) error { + result = append(result, string(v)) + return nil + }) + } + return nil + }) + return result, err +} |